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

Dúvida em código JS. Aplicar uma classe a um botao e a um input

Estou tentando aplicar uma classe por meio do classList.add após o click de um botão que chama uma função. Porém não acontece nada. Tentei com display: none e visibility:hidden e não consegui.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/first.css">
    <title>nome</title>
</head>
<body>

<h1 id="titulo">Olá, qual é seu nome?</h1>

    <input id="campo"></input>
    <button id="botao" onclick = "troca()" on>Click</button>

    <div class="opcoes">
        <h2>O que deseja fazer?</h2>
    </div>





    <script>
        var nome = document.querySelector("#campo");
        var texto = document.querySelector("#titulo");
        var botao = document.querySelector("#botao");

        function troca(){

            texto.textContent = "Olá, " + nome.value
            nome.classList.add("#input-esconde");
            botao.classList.add("#botao-esconde");




        }

        console.log(texto);
    </script>

</body>
</html>

css

.opcoes{
    visibility: hidden;
}

#botao-esconde{
    display:none;
}

#input-esconde{
    display:none;
3 respostas

Oi Vitor!!

Acho que você se confundiu na nomenclatura de classe e id. Para referenciarmos uma classe, usamos o caractere. como prefixo, enquanto para um id, utilizamos o #. O que acontece é que você criou uma nova classe, mas no seu CSS você o chama como um id!

Dessa forma, tente as seguintes alterações no seu código, e o mesmo deverá funcionar:

No HTML:

 function troca(){
            texto.textContent = "Olá, " + nome.value
            nome.classList.add("input-esconde");
            botao.classList.add("botao-esconde");
        }

E no CSS:

.opcoes{
    visibility: hidden;
}

.botao-esconde{
   display:none;
}

.input-esconde{
    display:none;
}

Espero ter ajudado! Muito sucesso e bons estudos!

Oi André, tentei a sua solução e deu certo aqui. Só não entendi por que não foi necessário o uso do prefixo na chamada de classe do classList.add... Será que é por causa que ele chama uma classe automaticamente?

Se eu quisesse chamar um ID ao invés de classe como faria?

solução!

Oi Vitor!!

Como estamos chamando a função classList(), já estamos sinalizando que estamos mexendo em uma classe, então não tem a necessidade do seletor (# ou .) nesse caso.

No caso de um id, chamamos com o seletor #, mas você não irá querer gerá-lo dinamicamente. Um id é único, então o ideal é sempre utilizar classes para gerar alterações dinâmicas na sua página.

Espero que tenha ficado mais claro para você!! Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software