在Javascript中循环嵌套对象

时间:2016-09-05 18:30:09

标签: javascript arrays object

我是Javascript的新手,正致力于构建测验应用。所有测验问题和答案都存储在名为“测验”的对象中的数组中。我正在尝试使用循环让应用程序在点击按钮时循环查看问题。但是,我正在使用的循环似乎冻结了我的页面。对于我出错的地方有任何指示?

//sample object
    quiz = {
        "questions": [
            {
                "question":"Question 1",
                "a":"Answer a1",
                "b":"Answer b1",
                "c":"Answer c1",
                "d":"Answer d1",
            },
            {
                "question":"Question 2",
                "a":"Answer a2",
                "b":"Answer b2",
                "c":"Answer c2",
                "d":"Answer d2",
            }
        ]
    }

//load next question on click   
        $("#next").click(function(){
            for (i=1; i<quiz.questions.length; i.next) {
               $("#question").text(quiz.questions[i].question);
            };
        });

1 个答案:

答案 0 :(得分:4)

for (i=1; i<quiz.questions.length; i.next) {

i.next不会修改i的值。由于永远不会修改i,因此永远不会满足第二个条件,因此循环是无限的。

改为使用i++

$("#question").text(quiz.questions[i].question);

每次循环时,用下一个问题替换文本。你总会得到最后一个问题。

如果您想在每次按下按钮时递增,则不应使用for循环。

  • 在函数外声明i
  • 完全删除for循环
  • i++放在函数的末尾
  • 测试i >= quiz.questions.length何时做...当你用完问题时你想做什么。
i=1

关于声明i的主题。 JavaScript数组从0开始。您可能希望将其初始化为0而不是1