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

[Dúvida] 'False' eterno

olá

meu código continua dando erro, mesmo quando acerta o número secreto

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

console.log(gerarNumeroAleatorio());

let numeroSecreto = gerarNumeroAleatorio();

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

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

function verificarChute() { let chute = document.querySelector('input').value; console.log(chute == numeroSecreto); };

coloquei para aparecer no console, e mesmo o número sendo "certo", ele entrega o valor como "false", tentei mas não consegui identificar um erro

4 respostas

Olá, Nicolas! O problema provavelmente está no tipo de dado do valor capturado no input. Quando você usa document.querySelector('input').value, ele retorna uma string, enquanto numeroSecreto é um número. Tente converter chute para um número antes da comparação, usando parseInt() ou Number().

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

Ainda não deu certo, pelo que vi a função "verificar chute" está retornando um "false" antes mesmo do número ser digitado, tentei concertar, mas não mudou nada.

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

console.log(gerarNumeroAleatorio());

let numeroSecreto = gerarNumeroAleatorio();

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

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

document.querySelector('button').addEventListener('click', verificarChute);

function verificarChute() { let chute = parseInt(document.querySelector('input').value); if (!isNaN(chute)) { console.log(chute === numeroSecreto); } else { console.log("Por favor, insira um número válido."); } };

console.log("Chute:", chute); console.log("Número Secreto:", numeroSecreto);

solução!

Olá Nicolas! Acho que o problema está nessa parte do seu código:

console.log("Chute:", chute);
console.log("Número Secreto:", numeroSecreto);

Essas duas linhas estão fora da função verificarChute, e são executadas imediatamente quando o script carrega, antes mesmo do usuário digitar qualquer coisa. Como a variável chute só é declarada dentro da função, ela não existe ainda quando o console.log("Chute:", chute) roda — e isso provavelmente está gerando erro. Além disso, o seu console.log(chute === numeroSecreto); só mostra true ou false, sem deixar claro qual foi o chute ou o número secreto. Tente fazer o seguinte. Remover os console.log fora da função e dentro da função verificarChute mostre os valores junto com o resultado.

function verificarChute() {
  let chute = parseInt(document.querySelector('input').value);
  if (!isNaN(chute)) {
    console.log("Chute:", chute);
    console.log("Número Secreto:", numeroSecreto);
    console.log("Acertou?", chute === numeroSecreto);
  } else {
    console.log("Por favor, insira um número válido.");
  }
}

E pode remover estes dois que estão fora da função:

console.log("Chute:", chute); 
console.log("Número Secreto:", numeroSecreto);

Espero que vai funcionar.

Oi Karina, Deu certo, o código saiu do looping infinito, lembra que no começo do código eu usei um console.log para ver o número secreto, então, ele não estava mostrando o número real, ele estava entregando um número secreto falso, exemplo: mostrava 4 e o número secreto era 9, tô tentando entender o pq disso, enfim... obrigado pela ajuda!