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

Não exibindo palavra secreta mesmo no acerto.

Olá, Meu código esta limpando o campo input após as tentativas, porém quando eu acerto a palavra secreta ele também limpa. Não consegui fazer ele ficar aparecendo após o acerto.

let numeroSecreto = 6;
//console.log(numeroSecreto);
let tentativas = 1;

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('h1', 'Parabens!');
        let palavratentativa = tentativas > 1 ? 'tentativas':'tentativa';
        let mensagemTentativas = `Você acertou o número secreto com ${tentativas} ${palavratentativa}.`;
        exibirTextoNaTela('p', `${mensagemTentativas}`);
        document.getElementById('reiniciar').removeAttribute('disabled');

    }else{
        if(chute > numeroSecreto){
            exibirTextoNaTela('p', 'O número secreto é menor.');
        }else{
            exibirTextoNaTela('p', 'O número secreto é maior.');
        }
    }
    tentativas++;
    limparCampo();
    
}

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

//limpa campo input
function limparCampo(){
    chute = document.querySelector('input');    
    chute.value = '';
}
2 respostas
solução!

Olá, Jean! Parece que você está quase lá, só precisamos fazer um pequeno ajuste no seu código.

No seu código, a função limparCampo() está sendo chamada sempre, independente de você acertar ou errar o número secreto. Isso faz com que o campo seja limpo mesmo quando você acerta o número.

Para resolver isso, você pode mover a chamada da função limparCampo() para dentro do bloco else da função verificarChute(). Dessa forma, o campo só será limpo quando você errar o número secreto. Veja como ficaria:

function verificarChute() {
    let chute = document.querySelector('input').value;
    
    if(chute == numeroSecreto){
        exibirTextoNaTela('h1', 'Parabens!');
        let palavratentativa = tentativas > 1 ? 'tentativas':'tentativa';
        let mensagemTentativas = `Você acertou o número secreto com ${tentativas} ${palavratentativa}.`;
        exibirTextoNaTela('p', `${mensagemTentativas}`);
        document.getElementById('reiniciar').removeAttribute('disabled');

    }else{
        if(chute > numeroSecreto){
            exibirTextoNaTela('p', 'O número secreto é menor.');
        }else{
            exibirTextoNaTela('p', 'O número secreto é maior.');
        }
        tentativas++;
        limparCampo();
    }  
}

Com essa alteração, o campo só será limpo quando você errar o número secreto, e continuará exibindo o número quando você acertar.

Espero ter ajudado e bons estudos!

Agora sim. Muito obrigado Natan.