Olá, tudo bem? Estou treinando a aula de manipulação da DOM e minha duvida é um pouco fora da aula, mas se alguém puder me ajudar, agradeço.
O objetivo é mostrar para o usuário uma operação matemática, solicitar a resposta e verificar se o input está certo. Implementei uma variável para contar o nº de acertos e indicar uma pontuação, que será mostrado quando o usuário errar ou clicar no botão desistir. (Será mostrado em outra pagina HTML).
Ao pesquisar como poderia redirecionar o HTML para um novo achei o seguinte comando: window.location.href = "telafinal.html"
O problema que estou tendo é que: Após ser redirecionado para a nova pagina, a função mostraNumeros();
é executada, o que me traz um erro, pois ele não encontra os elementos na nova pagina. (não é para encontra mesmo rs). Abaixo o erro: (ele se refere a 7ª linha (de baixo pra cima) do Código que postei abaixo
Uncaught TypeError: Cannot set property 'innerHTML' of null
at mostraNumeros (script.js:56)
at script.js:126
Alguém sabe me dizer pq ele executa a função depois de ser redirecionado? Ou jeito melhor de redirecionar o HTML.
Segue abaixo a parte do código que chama as funções, e o repositório se for preciso.
Grato. https://github.com/victorelisiario/js-desafiodevector
[...]
function mostraNumeros () {
operador = Math.floor(Math.random() * 4);
if (operador == 0) {
sorteiaNumerosSomaSubtracao ();
numero01 = numeroProvavel01;
numero02 = numeroProvavel02;
document.querySelector('[data-operador]').innerHTML = "+";
document.querySelector('[data-valor01]').innerHTML = numero01;
document.querySelector('[data-valor02]').innerHTML = numero02;
resultado = (numero01 + numero02);
} else if (operador == 1) {
sorteiaNumerosSomaSubtracao ();
if (numeroProvavel01 > numeroProvavel02) {
numero01 = numeroProvavel01;
numero02 = numeroProvavel02;
} else {
numero01 = numeroProvavel02;
numero02 = numeroProvavel01;
}
document.querySelector('[data-operador]').innerHTML = "-";
document.querySelector('[data-valor01]').innerHTML = numero01;
document.querySelector('[data-valor02]').innerHTML = numero02;
resultado = (numero01 - numero02);
} else if (operador == 2) {
sorteiaNumerosMultiplicacao();
numero01 = numeroProvavel01;
numero02 = numeroProvavel02;
document.querySelector('[data-operador]').innerHTML = "X";
document.querySelector('[data-valor01]').innerHTML = numero01;
document.querySelector('[data-valor02]').innerHTML = numero02;
resultado = (numero01 * numero02);
}else {
sorteiaNumerosDivisao ();
if (numeroProvavel01 == 0 ) {
numeroProvavel01 += 1;
}
if (numeroProvavel02 == 0) {
numeroProvavel02 += 1;
}
const numerador = (numeroProvavel01 * numeroProvavel02);
numero01 = numerador;
numero02 = numeroProvavel02
document.querySelector('[data-operador]').innerHTML = "÷";
document.querySelector('[data-valor01]').innerHTML = numero01;
document.querySelector('[data-valor02]').innerHTML = numero02;
resultado = (numeroProvavel01);
}
}
function verificacao () {
var palpite = document.querySelector('[data-input]').value;
if (resultado == palpite) {
pontuacao += 1;
console.log(pontuacao);
backgroundVerde();
setTimeout(backgroundNormal, 400);
mostraNumeros();
palpite = document.querySelector('[data-input]').value = "";
palpitefoco.focus();
} else {
console.log("Errou");
window.location.href = "telafinal.html"
}
}
function desistencia () {
console.log("desistiu")
window.location.href = "telafinal.html"
}
mostraNumeros();
palpitefoco.focus();
const botaoTentar = document.querySelector('[data-botaoTentar]');
botaoTentar.addEventListener('click', verificacao);
const botaoDesistir = document.querySelector('[data-botaoDesistir]');
botaoDesistir.addEventListener('click', desistencia);