使用for循环调用函数时浏览器崩溃

Browser crash when calling for a function with a for-loop

本文关键字:浏览器 崩溃 函数 调用 for 循环 使用      更新时间:2023-09-26

我试图显示一个问题的正确答案是什么,如果选择了错误的一个。我在JSON-object列表中存储了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
            }
        }
    }

correct()

的函数
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列表中只有一个问题,它就会全部工作。但是当我尝试同时执行这五个脚本时,浏览器崩溃了。

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

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

因此,变量"i"是全局的,所以"正确的"函数践踏变量的值。两个函数都应该用var声明"i"