Bom, estou fazendo um exercio e preciso de uma pequena ajuda, adicionei uma lampada ligada quando é clicado, como faço para quando for clicada novamente ela substua a img?
Obs: Tenho uma imagem de uma luz acesa e outra desligada.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Aprendendo Eventos</title>
<style type="text/css">
body{background: #000000;}
#lampada{display:block; margin: 20px auto; }
</style>
<script type="text/javascript">
function ligar(){
window.document.getElementById("lampada").src = "../img/xlamp_on.png";
}
</script>
</head>
<body>
<img id="lampada" onclick="ligar();" src="../img/xlamp_off.png">
</body>
</html>
Basicamente o que deve fazer é guardar o estado da lâmpada em uma variável:
var ligado = false; // Inicia desligado
function ligar() {
if(ligado) {
// Se ligado trocar a imagem por desligado
window.document.getElementById("lampada").src = "../img/xlamp_off.png";
} else {
// Se desligado trocar a imagem por ligado
window.document.getElementById("lampada").src = "../img/xlamp_on.png";
}
ligado = !ligado; // inverte o valor de ligado
}
1 curtida
obrigado pela ajuda, só não entendi muito bem a negação do !ligado. Mais deu certo.
Pensei em colocar dentro do if, alterar para true, e no else alterar para falso não deu certo.
Pela forma que você fez eu pensei assim, se ele for false ele liga, ai já fica como true e por fim inverte ele que no caso seria falso?
1 curtida
Isso mesmo a idéia do operador ! é negação. Então quando ligado recebe !ligado o valor que estiver em ligado será invertido, ou seja, se for false vira true e se for true vira false. Poderia ter colocado dentro dos ifs mas seria repetição de código.
1 curtida
tem razão, mesmo que saia do if else vai continuar. obrigado!
1 curtida
Vlw amigo sua resposta me ajudou muito