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

Quando o chute vai para a validação, ele está indo como um NaN sempre, como posso resolver ?

validação------

function verificaValor (){
    const numero = + chute 
    console.log(numero)
    if (chuteInvalido(numero)){
        console.log('valor invalido')
    }

    if (numeroMaiorPermitido(numero)){
        console.log('valor invalidoo!')
    }
}

function numeroMaiorPermitido(numero) {
    return numero > maiorValor || numero < menorValor
}

function chuteInvalido(numero) {
    return Number.isNaN(numero)
}

reconhecimento ---------
const elementoChute = document.getElementById('chute')



window.SpeechRecognition =
  window.SpeechRecognition || window.webkitSpeechRecognition;

const recognition = new SpeechRecognition();

recognition.lang = 'pt-br'
recognition.start()

recognition.addEventListener('result', onSpeak)

function onSpeak (e){
    var chute = e.results[0][0].transcript
    exibeChuteNaTela(chute)
    verificaValor(chute)
}

function exibeChuteNaTela (chute){
    elementoChute.innerHTML=`
    <div>Você disse</div>
    <span class="box"> ${chute}</span>
    `
}

sorteio --------

console.log('estou aqui')
const menorValor = 1
const maiorValor = 1000

const numeroSecreto = gerarNumeroAleatorio()

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

console.log('numero secreto:' + numeroSecreto)

const elementoMenorValor = document.getElementById('menor-valor')
elementoMenorValor.innerHTML = menorValor

const elementoMaiorValor = document.getElementById('maior-valor')
elementoMaiorValor.innerHTML = maiorValor
2 respostas
solução!

Oii Felipe, tudo bem?

O erro está ocorrendo porque você está tentando passar um argumento para a função verificaValor(), mas essa função não foi definida para receber argumentos.

No seu código, você tem:

function verificaValor (){
    const numero = + chute 
    console.log(numero)
    if (chuteInvalido(numero)){
        console.log('valor invalido')
    }

    if (numeroMaiorPermitido(numero)){
        console.log('valor invalidoo!')
    }
}

E na sua função onSpeak(e), você está chamando verificaValor(chute), tentando passar chute como argumento:

function onSpeak (e){
    var chute = e.results[0][0].transcript
    exibeChuteNaTela(chute)
    verificaValor(chute)
}

Para corrigir isso, você deve definir chute como um argumento na função verificaValor(). Veja como deveria ficar:

function verificaValor (chute){
    const numero = + chute 
    console.log(numero)
    if (chuteInvalido(numero)){
        console.log('valor invalido')
    }

    if (numeroMaiorPermitido(numero)){
        console.log('valor invalidoo!')
    }
}

Dessa forma, quando você chamar verificaValor(chute) na função onSpeak(e), a função verificaValor() vai receber o valor de chute corretamente.

Espero que dê certo.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

muito obrigado ! o problema foi solucionado.