4
respostas

Erro na execução do JavaScript

Olá, atualmente estou fazendo o curso de validação de formulários, porém durante as aulas decidi implementar uma função na pagina para poder ver a senha clicando em um olhinho. Fiz a lógica para transformar o input "password" em "text" fazendo com o que a senha digitada volte a aparecer.

O código foi o seguinte:

let olhinho = document.querySelector('.lnr-eye');

olhinho.addEventListener('click', function() {
    let input = document.querySelector('#password');

    if(input.getAttribute('type') == 'password') {
        input.setAttribute('type', 'text');
    }
    input.setAttribute('type', 'password');

});

porém, o código está me retornando um erro, vocês podem me ajudar a resolver?

Erro: main.js:6 Uncaught TypeError: Cannot read properties of null (reading 'getAttribute') at HTMLSpanElement. (main.js:6)

(Captura de tela demonstrando a página Doguito Petshop com as ferramentas de desenvolvedor aberta. Nela está sendo exibida um erro na linha 6 do main.js)

4 respostas

Boa noite, não esta dando pra ver direito, mas acho que você colocou no input uma classe chamada input, e o id senha, mas no querySelector você está passando #password, que no caso daria certo se o input tivesse um id chamado password. Tenta chamar com o .senha ou #input que acho que da certo. Valeu.

Olá Matheus, obrigado pela atenção :) . Eu tentei mudar ali no querySelector para "let input = document.querySelector('.senha');" e depois para "let input = document.querySelector('#input');" e nos dois casos ele continuou dando o mesmo erro.

O html da senha é o seguinte:

                    <div class="input-container">
                        <input name="senha" id="senha" class="input" type="password" placeholder="Senha"
                            pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?!.*[ !@#$%^&*_=+-]).{6,12}$" title="A senha deve conter entre 6 a 12 caracteres, deve conter ao menos uma letra maiúscula, um numero e não deve conter símbolos." required>
                        <label class="input-label" for="senha">Senha</label>
                        <span class="lnr lnr-eye"></span>
                        <span class="input-mensagem-erro">Este campo não está válido</span>
                    </div>

Eu vou pesquisar sobre esse erro, é a primeira vez que vejo ele, até porque também está sendo a primeira vez que uso "getAttribute" e "setAttribute".

Não deu certo porque você inverteu o ponto com a hashtag. Para selecionar um elemento do HTML via classe, você utiliza o ponto, e via id, você usa a hashtag, e pelo que você colocou, você inverteu, colocou hashtag paraba classe e ponto para o id. No caso seria #senha ou . input

Eu tentei fazer essa alteração, mas o console não responde nada agora