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

[Dúvida] Função limpar campo não funciona.

Olá não consigo fazer a função de limpar o campo funcionar, já tentei algumas coisas e nada, segue, agradeço quem conseguir ajudar.

let numeroSecreto = gerarNumeroAleatorio ();
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 numero entre 1 e 10');


function verificarChute() {
    let chute = document.querySelector('input').value;
   
    if (chute == numeroSecreto) {
    exibirTextoNaTela('h1', 'Acertou');
    let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
    let mensagemTentativas = `Você descobriu o numero 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 numero secreto é maior');
        }
            tentativas++;
    }
}

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

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

Olá Ader.

Tudo bem?

Pelo que entendi, você está com dificuldades em fazer a função de limpar o campo funcionar no seu código. Analisando o contexto fornecido, percebi que você já possui a função limparCampo() implementada, mas ela não está sendo chamada em nenhum momento.

Para resolver esse problema, você precisa chamar a função limparCampo() logo após a linha tentativas++ na função verificarChute(). Dessa forma, o campo será limpo sempre que o usuário errar o chute.

Aqui está o trecho de código que você precisa adicionar:

function verificarChute() {
    let chute = document.querySelector('input').value;
   
    if (chute == numeroSecreto) {
        exibirTextoNaTela('h1', 'Acertou');
        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        let mensagemTentativas = `Você descobriu 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(); // Adicione essa linha para limpar o campo
    }
}

Com essa alteração, o campo será limpo sempre que o usuário errar o chute.

Espero ter ajudado e bons estudos!

Obrigado pela ajuda, mas ainda não funcionou

let numeroSecreto = gerarNumeroAleatorio ();
let tentativas = 1; 

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

function exibirMensagemInicial () {
    exibirTextoNaTela('h1', 'Jogo do número secreto.');
    exibirTextoNaTela('p', 'Escolha um numero entre 1 e 10');
}

exibirMensagemInicial();

function verificarChute() {
    let chute = document.querySelector('input').value;
   
    if (chute == numeroSecreto) {
    exibirTextoNaTela('h1', 'Acertou');
    let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
    let mensagemTentativas = `Você descobriu o numero 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 numero secreto é maior');
        }
            tentativas++;
            limparCampo();
    }
}

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

function limparCampo() {
    chute = document.querySelector('input');
    chute.value = '';
}

function reiniciarJogo() {
    numeroSecreto = gerarNumeroAleatorio()
    limparCampo();
    tentativas = 1;
    exibirMensagemInicial();
    document.getElementById('reiniciar').setAttribute('disabled', true);
}

esse é o codigo atual, já modificado.

Está correto deveria funcionar, eu chamei a função "limparCampo()" no primeiro "IF" também, para limpar quando o jogador acertar o número secreto, veja:

function verificarChute() {
    let chute = document.querySelector('input').value;
   
    if (chute == numeroSecreto) {
    exibirTextoNaTela('h1', 'Acertou');
    let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
    let mensagemTentativas = `Você descobriu o numero secreto com ${tentativas} ${palavraTentativa}. `;
    exibirTextoNaTela('p', mensagemTentativas); 
    document.getElementById('reiniciar').removeAttribute('disabled');      
    
    limparCampo();    // Chamei a função aqui <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    
    } else {
        if (chute > numeroSecreto) {
            exibirTextoNaTela('p', 'O número secreto é menor');
        } else {
            exibirTextoNaTela('p', 'O numero secreto é maior');
        }
            tentativas++;
            limparCampo();  // E chamei a função aqui <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    }
}