Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Estou tentando fazer uma atividade para crianças (tipo 1+1=2) e estou usando inputs para as respostas dos alunos e fiz uma array com os resultados corretos... Até aí tdo bem... O problema é que não consigo fazer com que os alerts "Tente novamente" e "Parabéns" apareçam só uma vez e na hora correta.
Segue o código para vcs terem uma noção:
function validacao() {
var respostas = document.getElementsByTagName("input")
var corretas = [1,2,3,5,7,9,10,12];
for (i=0; i<respostas.length; i++) {
if (parseInt(respostas.value) != corretas) {
respostas.value = "";
if(i==7) {
alert("Tente novamente!");
}
}
else {
alert("Parabéns");
}
}
}Obrigada pela ajuda Vinícius, mas continua com o mesmo erro ainda... Se existe um campo correto ele ainda mostra "parabéns" e depois o "tente novamente".
como retorna a var repostas?
Quando elas estão erradas elas apagam. Notei também que quando o último resultado está correto ele não mostra o alert "Tente novamente".
tudo bem.
a variável var respostas
var respostas = document.getElementsByTagName("input")
faltou um ponto e virgula no seu code.
mas de qualquer forma quero saber o que vem pra essa variável.
Eu notei também que estava faltando o ponto e vírgula hehe
Essa variável pega os valores digitados pelo usuário nos inputs.
consegue me mostrar exatamente como retorna?
da um console e me mostra
Tentei pelo console ele não me retornou nada, pelo alert ele voltou: object HTMLCollection
console.log(respostas);
não retorna nada?
nadinha....
não sei se isso te ajuda, qndo eu coloco respostas.value no alert dá undefined
começa ai o erro, primeiro se certifique de que vai chegar do jeito que você espera.
eu testei a mesma variável dentro do loop e ela está pegando os valores corretamente....
vou quebrar a cabeça mais um pouquinho...
Obrigada pela ajuda mesmo assim.
então posta o que ela retorna dentro do loop;
Ela retorna os valores adicionados nos inputs
só com o número digitado
Na linha:
>
var respostas = document.getElementsByTagName("input")
Além de colocar o ponto e virgula você precisa colocar um ".value" depois de "document.getElementsByTagName("input")".
Espero ter ajudado!
Diogo.
Bom dia,
Pensei num exemplo bem humilde, veja se ajuda na idéia:
Demo online - http://angelorubin.besaba.com/ChecarInputsComArray/checar.php
CSS
* {
margin:5px;
padding:5px;
}
JS
function validacao(idInput) {
var respostas = document.getElementById(idInput).value;
var corretas = [5];
for (i = 0; i < corretas.length; i++) {
if (respostas != corretas) {
alert("Tente novamente!");
}
else {
alert("Parabéns");
}
}
}
XHTML
<h3>Qual o valor correto do cálculo abaixo?</h3>
<p>2 + 3</p>
<label>Insira sua reposta aqui</label>
<input name="um" id="um" type="number"/>
<br/>
<button type="button" onClick="validacao('um')" name="enviar">Verificar Resposta</button>
Espero que ajude.
Melhorei um pouco o negocio:
JS
function validacao(idInput) {
var respostas = document.getElementById(idInput).value;
var respostas_corretas = [5,7];
var tamanho = respostas_corretas.length;
for (i = 0; i < tamanho; i++) {
if(respostas != respostas_corretas[i]) {
var zero = 0;
}
if (respostas == respostas_corretas[i]){
var um = 1;
}
}
if(um === 1){
alert("Resposta correta, Parabéns !");
}
else if (zero === 0) {
alert("Resposta incorreta, tente novamente!");
}
}
XHTML
<h3>Qual o valor correto do cálculo abaixo?</h3>
<p>2 + 3 = ?</p>
<label>Insira sua reposta aqui</label>
<input name="um" id="um" type="number"/>
<br/>
<button type="button" onClick="validacao('um')" name="enviar">Verificar Resposta</button>
<h3>Complete o próximo número da sequência abaixo corretamente</h3>
<p>1,3,5,?</p>
<label>Insira sua reposta aqui</label>
<input name="dois" id="dois" type="number"/>
<br/>
<button type="button" onClick="validacao('dois')" name="enviar">Verificar Resposta</button>
Espero que ajude.Muito obrigada pela ajuda de todos, me inspirei na solução do angelorubin e consegui resolver o problema.
Meu documento JavaScript ficou assim:
function validacao() {
var valida = new Array();
var respostas = document.getElementsByTagName("input");
var corretas = [1,2,3,5,7,9,10,12];
for (i=0; i<respostas.length; i++) {
if (parseInt(respostas.value) != corretas) {
respostas.value = "";
valida.push(false);
}valida.push(true);
}
}alert("Parabéns!");
}alert("Tente novamente!");
}
}
é só por o return false depois do tente novamente