我正在用HTML和JAVASCRIPT构建一个简单的琐事/测验游戏,但是我在验证好的响应方面遇到了问题,除了第一个验证良好的响应。
Javascript代码:
// global arrays
var index = 0;
var p = ['Quantos octetos tem um IPv4?',
'Qual a mascara de 192.168.10.1/24?',
'Qual o comando que verifica conexões de rede?',
];
var r = [
['4', '8', '16'],
['255.255.255.255', '255.255.255.0', '255.0.0.0', ],
['CHMOD', 'NETSTAT', 'PING']
];
function validar() {
//if this is the last question hide and displays quiz ends
if (index >= p.length) {
document.getElementById('per').innerHTML = '<div>earthTrivia End, Thank `you!</div>';
document.getElementById('bt1').style.visibility = 'hidden ';
clearInterval(interval);
document.getElementById('score').innerText = score;
document.getElementById('inp').style.visibility = 'hidden';
estatistica(score);
return false;
}
var html = '<div>' + p[index] + '</div>';
for (var i = 0; i < r[index].length; i++) {
html += '<label><h3>' + r[index][i] + '</label></h3>';
}
html += '</div > ';
document.getElementById('per').innerHTML = html;
index++;
valrespostas();
}
function valrespostas() {
var resposta = document.getElementById('inp').value;
for (var j = 0; j < r.length; j++) {
var resposta = document.getElementById('inp').value;
if (resposta[j] == r[0][0]) {
document.getElementById('inp').value = '';
document.getElementById('score').innerText = score++;
break;
} else if (resposta[j] == r[1][0]) {
document.getElementById('inp').value = '';
document.getElementById('score').innerText = score++;
break;
} else if (resposta[j] == r[2][0]) {
document.getElementById('inp').value = '';
document.getElementById('score').innerText = score++;
break;
} else {
document.getElementById('inp').value = '';
break;
}
}
document.getElementById('inp').value = '';
}
我的validar()函数每次都被HTML文件中的一个按钮调用,其目标是前进到全局数组中的下一个问题/答案。 这项工作正常。
接下来调用函数valrespostas(),它必须验证用户在输入表单字段中输入的答案。 这不起作用。这仅适用于for循环的第一次迭代,在剩余的迭代中,变量respostas保存第一次迭代的值并且永远不会更改为新值,如果用户选择正确的答案,则不会将其验证为良好答案。
我在STACK中看到,关于循环闭包,但找不到解决方案。
有什么建议吗?