O que há de errado com o código? exercício com vetor e comparação de valores

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()”?

  1. console.log(sorteados)
    
  2. 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!