调用带有for循环的函数时,浏览器崩溃

时间:2014-05-26 20:45:40

标签: javascript jquery json

如果选择了错误的答案,我试图表明问题的正确答案。 我在JSON对象列表中存储了5个问题,并存储了用户在数组中选择的内容。

我用来追加答案的函数是:

    function userAnswers(){
        $("#result").append('<div id="yourAnswers"></div>');
        //rememberAnswer is the name of the array that have stored the data during the quiz
        for(i = 0; i < rememberAnswer .length; i++){
            $("#yourAnswers").append('<p>'+rememberAnswer [i][0]+'</p>');
            if(rememberAnswer [i][2] == 1){
                $("#yourAnswers").append('<p style="color: green;">'+rememberAnswer [i][1]+'</p><br/>');
            } else {
                $("#yourAnswers").append('<p style="color: red;">'+rememberAnswer [i][1]+'</p><br/>');
                //$("#yourAnswers").append('<p style="color: green;">The correct answer is: '+ correct([i])+'</p>');
// This makes the browser crash when
            }
        }
    }

纠正()

的功能
function correct(id){
    var test = quiz.question[id].answers; //Getting the answers from JSON-list
    var text;
    for(i = 0; i < test.length; i++){
        if(test [i].correct_answer == 1){
            text = test[i].answer;
            break;
        }
    }
    return text;    
}

有趣的是,如果我在json列表中只有一个问题,那么一切正常。但是当我尝试用所有五个执行它时,浏览器崩溃了。

1 个答案:

答案 0 :(得分:1)

你没有声明你的循环变量(“i”):

for(var i = 0; i < test.length; i++){ // <-- add the "var" keyword

因此,变量“i”是全局变量,因此“正确”函数会踩踏变量的值。这两个函数都应该使用var声明“i”。