1
resposta

[Bug] Aparentemente tem algum erro no .innerHTML...

Opa, bom?

Alguém pode me ajudar? Não consigo seguir em frente com o projeto por que fica aparecendo a seguinte mensagem no console toda vez que acerto o número:
app.js:6 Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')
at exibirTextoNaTela (app.js:6:19)
at verificarChute (app.js:15:5)
at HTMLButtonElement.onclick ((index):24:73)


O meu código é exatamete o mesmo que os professores tem usado no curso, sigo passo a passo, não mudo nada:
let numeroSecreto = gerarNumeroAleatorio();
console.log(numeroSecreto);

function exibirTextoNaTela(tag, texto) {
let campo = document.querySelector(tag);
campo.innerHTML = texto;
}

exibirTextoNaTela("h1", "Jogo do número secreto");
exibirTextoNaTela("p", "Escolha um número entre 1 e 10");

function verificarChute() {
let chute = document.querySelector("input").value;
if (chute == numeroSecreto) {
exibirTextoNaTela("h2", "Você acertou!");
exibirTextoNaTela("p", "Você descobriu o número secreto!");
} else if (chute < numeroSecreto) {
exibirTextoNaTela("p", "O número secreto é maior!");
} else {
exibirTextoNaTela("p", "O número secreto é menor!");
}
}

function gerarNumeroAleatorio() {
return parseInt(Math.random() * 10 + 1);
}

OBS: o .innerHTML aparece na cor de uma variável, não de um comando especifico nem nada semelhante, fica apenas branco. Acho que o VSCode está confundindo com uma variável, mas não sei arrumar.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Bom dia, Carlos!

Vamos destrinchar o erro:

"Cannot set properties of null (setting 'innerHTML')"

O que ele quer dizer aí é que ao tentar definir o innerHTML de "algo", este "algo" é null. No caso do seu código seria a variável "campo", que é definida pelo resultado de "document.querySelector(tag)". Se "campo" é null, então significa que ao tentar buscar um elemento pela "tag" ele não encontra nada.

Verifique se todas as tags que você utiliza (h1, h2, p) realmente existem no documento HTML. Na documentação do método você verá que ele só retorna "null" caso não encontre um elemento pelo seletor definido: https://developer.mozilla.org/pt-BR/docs/Web/API/Document/querySelector.

Lembrando que o querySelector busca elementos já existentes, ele não cria novos elementos HTML.