Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Redirecionamento de paginas

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);
1 resposta
solução!

Consegui encontrar o erro. Segue:

Ao criar o novo arquivo HTML eu inclui a tag scrip, que estava chamando o mesmo arquivo JS, o que fazia executar a função mostraNumeros();