Bom estou fazendo uma apostila e um dos exercícios é escolher alguns números e por eles em um vetor, o usuário ira tentar advinha-lós e seus lance ou chutes irão ser guardados em outro vetor e no fim irei informar ao usuário quantos números ele acertou, criei esse código porém não roda de forma alguma, e o console do navegador não reporta nada então não sei amigos, obrigado pela ajuda.
<input type="text" id="numero" />
<input type="submit" value="lance" id="verificar"/>
<script>
var loteria = [1,6,3]
var sorteados = []
var lance = document.getElementById("numero")
var botao = document.getElementById("verificar")
botao.onclick = clicado
var clicado = function() {
var aux=0
sorteados.push(lance)
for (var i = 0;i<loteria.legth;i++){
if(lance.value == loteria[i]){
aux++
return
}
}
if (sorteados.legth == 3){
alert ("voce acertou"+aux)
}
}
</script>
Olá Chocolatecompimenta5,
Seu código tem um erro comum, acontece!
O JavaScript, diferente de muitas linguagens, lê linha por linha e cria o contexto em memória de variáveis, funções e etc… seguindo a ordem de cima para baixo da esquerda para a direita. Com esta informação em mãos, quando você declara o seguinte trecho: botao.onclick = clicado, a variável clicado ainda não está no contexto, pois ainda não foi salva em memória, o que resulta é que o evento do botão está sendo salvo em memória como undefined, e não com a função.
Basta declarar colocar o trecho: botao.onlick = clicado após o fim da function declarada na variável clicado.
Outras dicas:
Como boas práticas, procure sempre finalizar as instruções de códigos com “;” (ponto e vírgula),
Na declaração de script no html, use o attribute type=“text/javascript”, exemplo:
"<script type=“text/javascript”>//seu código </script>"
Se possível, não utilize script no próprio html, crie um arquivo externo e realize a chamada do arquivo no html, isso sempre ajuda na manutenção do código, exemplo: crie um arquivo script.js no mesmo diretório do seu html, no qual deverá ter a sua lógia javaScript. Chama ele no seu html usando a tag “<script src=“script.js” type=“text/javascript” />”
Até mais!!!
obrigado, agora ele está enviado as entradas pro array(sorteados) porem estão indo vazios então ainda continua com erro, terei que transformar os inputs com o “ParseInt()”?
-
console.log(sorteados)
-
VM35:1 (4) ["", "", "", ""]
Fiquei confuso com essa parte que me falou:
Na declaração de script no html, use o atribute type=“text/javascript”,
Se possível, não utilize script no próprio html, crie um arquivo externo e realize a chamada do arquivo no html, isso sempre ajuda na manutenção do código.
Obrigado!
Melhorei um pouco a minha explicação ao qual você ficou em dúvida.
Quanto ao fato de não adicionar no sorteado, você está adicionando o próprio elemento, e não o valor do elemento no push.
Tene trocar sorteados.push(lance); por sorteados.push(lance.value);
Ficou mais claro, irei seguir a dica a partir de agora, obrigado
Bom o código está colocando o inputs dentro do array porem parece que não está verificando ou um ultimo IF não funciona porque ele não me mostra quantos números foram acertados quando atinge o tamanho 3 (sorteados[3])
Olá, para melhor entender o erro que você está tendo, sugiro adicionar um debugger; antes do seu if que não está funcionando da forma que você espera.
Indico a leitura deste artigo, onde mostra como você consegue depurar seu código JavaScript.
1 curtida
Obrigado pela paciencia amigo, enfim resolvi meu problema, era um erro com a variável “aux” pois dentro da função ela sempre iria voltar ao valor inicial.
Novamente obrigado.
Disponha, espero ter ajudado!