我的代码的多个部分都有与此类似的片段:
function updateScore() {
var currentPoints=0;
for (nni=0;nni<currentSession.Questions.length+1;nni++) {
currentPoints+=currentSession.Questions[nni].Score;
}
alert('hi');
document.getElementById('quiz_score').innerHTML='%'+(currentPoints/currentSession.TotalPoints)*100
}
一切正常......直到循环结束。这种情况在多种情况下都会发生。循环结束后警报甚至不会显示。就像该功能刚刚停止一样...
我还遇到了迭代器(在本例中为 nni)保持全局的问题。基本上,我不能在我的代码中再次使用该变量,因为由于某种原因,如果我更改 nni,它会弄乱 for 循环。我显然没有做正确的事情。我是一个 self 训练的Javascripter(基本上是用谷歌搜索我不知道的东西,我从来没有上过课)。我一定是漏掉了一些关于 for 循环的东西。
如果可以的话谢谢!
最佳答案
您的 nni
变量是全局变量,因为它不是使用 var
关键字声明的:
function updateScore() {
var currentPoints = 0;
// nni declared with var:
for (var nni = 0; nni < currentSession.Questions.length + 1; nni++) {
currentPoints += currentSession.Questions[nni].Score;
}
alert('hi');
document.getElementById('quiz_score').innerHTML= '%' + ((currentPoints / currentSession.TotalPoints) * 100)
}
此外,您的评估语句每次都会随着您的增量而运行。将长度评估移至声明中:
for (var nni = 0, len = currentSession.Questions.length + 1; nni < len; nni++) {
关于javascript - JavaScript 中的循环出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5635869/