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

Por que o console ta dando que essa variável não está definida? Ajuda!

Olá gente, estava montando o código de acordo com a aula, e quando foi na hora de rodar simplesmente o título e o parágrafo do site sumiram, cliquei em inspecionar para ver o motivo e estava falando que a variável gerarNumeroAleatorio nao estava definida, mas ela está. Não consigo enxergar onde está o erro, podem me ajudar? Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas
solução!

O código que você forneceu contém alguns erros e pode ser melhorado. Vamos corrigi-los e otimizar o código:

let numeroSecreto = gerarNumeroAleatorio();

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

exibirTextoNaTela('h1', 'Jogo do Numero Secreto');
exibirTextoNaTela('p', 'Escolha um numero de 1 a 10');

function verificarChute() {
    let chute = parseInt(document.querySelector('input').value);

    if (numeroSecreto === chute) {
        exibirTextoNaTela('h1', 'Acertou!');
        exibirTextoNaTela('p', 'Parabéns!');
    } else {
        if (chute > numeroSecreto) {
            exibirTextoNaTela('p', 'O número secreto é menor');
        } else {
            exibirTextoNaTela('p', 'O número secreto é maior');
        }
    }
}

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

Principais correções e melhorias:

Correção na função verificarChute:

  • Faltava fechar as chaves corretamente.
  • Adicionei a conversão de chute para número usando parseInt.

Correção na função gerarNumeroAleatorio:

  • Usei Math.floor para garantir que o número gerado seja inteiro.

Correção na chamada da função document.querySelector:

  • Corrigi documento para document.

Correção na comparação de números:

  • Utilizei '===' para garantir uma comparação estrita.

Agora, o código deve funcionar melhor.

Olá! Estava fazendo seguindo a aula e alguns conceitos não aprendi nela, como Math.floor, ===, obrigada pelas dicas!!

Olá, Fabiana.

Em alguns casos, parseInt pode ser substituído por Math.floor, mas eles têm propósitos ligeiramente diferentes.

parseInt:

  • Utilizado para converter strings em números inteiros.
  • Não lida diretamente com números decimais; ele para de converter quando encontra um caractere não numérico.

Math.floor:

  • Utilizado para arredondar um número para o inteiro mais próximo para baixo.
  • Não converte strings em números. Se você já tem um número e quer remover a parte decimal, Math.floor é adequado.

Portanto, enquanto Math.floor é usado para arredondamento, parseInt é usado para converter strings em números inteiros. Eles têm usos diferentes, mas em algumas situações específicas, onde você está tratando apenas com números inteiros, você pode usar parseInt para realizar arredondamentos para baixo.