javascript中的循环出错?

时间:2011-04-12 13:21:58

标签: javascript iterator

在我的代码的多个部分中,我有类似于此的snippits:

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循环。我显然没有做正确的事情。我是一个自我纠结的Javascripter(基本上是谷歌搜索我不知道的任何东西,我从来没有上过课)。我一定错过了关于for循环的东西。

谢谢,如果可以的话!

3 个答案:

答案 0 :(得分:2)

您的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++) {

答案 1 :(得分:1)

for (var nni=0;nni<currentSession.Questions.length+1;nni++) {
    currentPoints+=currentSession.Questions[nni].Score;
}

应该是这样,你没有声明变量nni。或者你没有出界?

nni<currentSession.Questions.length+1?

答案 2 :(得分:1)

JS控制台报告什么?

如果您不知道JS控制台是什么,谷歌它,或者为您的函数添加异常处理程序:

function updateScore() {
    try {
        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
    } catch (err) {
        alert('Error ' + err.name + ': ' + err.message);
    }
}

另外,你让循环走得太远了;你应该停在.length,而不是.length + 1。

正如其他人所注意到的那样:你应该使用nni声明你的var变量。