Olá, Jhones! Beleza, cara? =)
O problema do seu código é esse: input.value = "";
.
Quando você escreve esse código, você está alterando o valor de input
para uma String vazia...
Repare no seu laço for
:
for (var posicao = 0; posicao < segredos.length; segredos++) {
if (input.value == segredos[posicao]) {
achou = true;
break;
}
input.value = "";
input.focus();
}
A primeira coisa que podemos ver logo na assinatura do loop é que estamos, de fato, percorrendo todo o array segredos
.
Mas o que esse código faz em cada posição desse array? A primeira coisa é verificar se o valor de input
é o mesmo que a posição do array. Até aí, legal, é o que queremos fazer... E se for igual? Nesse caso alteramos a variável achou
para true
e podemos quebrar o loop (comando break
).
Mas... E se o valor não for igual à primeira posição? Nesse caso, repare que ele não entrará no if
, mas continuará a execução:
input.value = "";
input.focus();
O código está alterando o valor do input
! Se ele não for igual à primeira posição, ele já é alterado para uma String vazia, o que vai acarretar no if
nunca mais sendo executado!
Acredito que o que você queria fazer, é limpar o campo e colocar o foco no input
, correto?
Nesse caso, o melhor seria fazer isso após o for
! Pois assim, quer dizer que percorremos todas as posições e não temos mais problema em alterar seu valor, assim:
function verifica() {
var achou = false;
for (var posicao = 0; posicao < segredos.length; posicao++) {
if (input.value == segredos[posicao]) {
achou = true;
break;
}
}
input.value = "";
input.focus();
if (achou == true) {
alert("Você acertou!");
}
if (achou == false) {
alert("Você errou!");
}
}
Espero ter ajudado, mas qualquer dúvida que possa ter restado, não hesite em perguntar que iremos ajudá-lo! =)
Abraço e bons estudos,
Fábio