Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

É possível atribuir um elemento html via id para uma variável?

Olá, amigo!

Estou com uma dúvida. Criei uma programa que muda a cor de uma div quando o usuário clica em um botão. A função que o botão chama ao ser clicado está descrita abaixo.

var clickNumber = 0;
var colorPallete = ["red", "yellow", "orange", "purple"];

function changeColor(){
    document.getElementById("square").style.backgroundColor = 
    colorPallete[clickNumber];
    if (clickNumber >= 3) {
        clickNumber = 0;
    }    else {
            clickNumber++;    
        } 
}

Agora minha dúvida é:

Como eu posso atribuir o id para uma variável? Eu tentei fazer o seguinte:

var box = document.getElementById("square");

E depois dentro da minha função escrevi:

function changeColor(){
    box.style.backgroundColor = colorPallete[clickNumber];
    if (clickNumber >= 3) {
        clickNumber = 0;
    }    else {
            clickNumber++;    
        } 
}

Porém dessa maneira não funciona. O que devo estar errando?

Vou deixar o HTML aqui também, mas acredito que o problema se encontre com sintaxe do J.S.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>SquareChangeColor</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div id="square"></div>
    <button onclick="changeColor()">Change color</button>
    <script src="script.js"></script>
</body>
</html>
3 respostas
solução!

Era pra funcionar, a sintaxe em si ta certa. Mas onde vc colocou essa linha do var box = .... ?

E qual o erro que ta dando no console? Que a variavel nao ta definida?

Eu testei das duas formas e funcionou.

O problema não é no Javascript. O que ocorre é que a DIV não tem conteúdo. Se você fizer este pequeno ajuste, vai ver que seu código funciona:

 <div id="square" style="width:100px;height:10px"></div>

Na verdade eu havia definido o estilo da div no aquivo 'style.css' linkado no head do html.

O problema era o que o Sérgio apontou acima. Eu havia digitado errado o nome da variável 'box' quando a declarei. Por algum motivo o console do chrome não me indicou esse erro.

Hoje quando abri o código novamente visualizei no mesmo segundo o que estava errado. Facepalm

Obrigado pela atenção :)