1
$(document).ready(function() {

allQuestions是对象数组,其角色为我的应用程序提供问题( question)、答案(choices)和正确的响应( )。correctAnswer

        var allQuestions = [{question: "If you were a super hero what powers would you have?",
            choices: ["a", "b", "c", "d"],
            correctAnswer:0},

            {question: "Do you have a cherished childhood teddybear?",
                choices: ["e", "f", "g", "j"],
                correctAnswer:0},

            {question: "Whats your favourite non-alcoholic drink?",
                choices: ["i", "j", "k", "l"],
                correctAnswer:0},

            {question: "Are you religious?",
                choices: ["m", "n", "o", "p"],
                correctAnswer:0}];

接下来,一旦单击带有#nextid 的按钮,带有 id 的段落应该使用数组#question 中的下一个问题更改他的文本。allQuestions

真正的结果?当我单击下一步按钮时,该函数会遍历所有问题,并且只显示最后一个问题。

我尝试使用 stackoverflow 中的解决方案,设置 varhasLooped但不起作用。

        $('#next').click(function(){
            //var hasLooped = false;
            $.each(allQuestions, function(key){

               // if(!hasLooped) {
                    $('#question').text(allQuestions[key].question);
               // }
               // hasLooped = true;
            })
        })
    });
4

4 回答 4

1

将问题索引保存在变量中,并在#next单击时递增。

写这个:

$(function () {
    var count = 0,
        len = allQuestions.length;
    $('#next').click(function () {
        if (count < len - 1) {
            count++;
            $('#question').text(allQuestions[count].question);
        } else {
            $(this).remove();
    });
});

fiddle

于 2014-07-08T09:19:28.240 回答
0

您需要将当前问题存储在外部某处并引用它而不是传递给每个函数的键,因为它总是会循环遍历所有函数,您会看到最后一个。

var intNum = 1;

$('#next').click(function(){

    $('#question').text(allQuestions[intNum].question);
    intNum++;
});
于 2014-07-08T09:14:48.293 回答
0
var clickCount = 0;
$('#next').click(function(){        
  $('#question').text(allQuestions[clickCount].question);       
  clickCount=(clickCount+1>9)?0:clickCount+1;
});
于 2014-07-08T09:22:58.427 回答
0

如果你不喜欢全局变量,你可以试试这个:

$('#next').click(function(){
    var counter = parseInt($("#next").attr("counter"));
    if (counter>=allQuestions.length){
        alert("No more questions!");
        return;
    }
    $('#question').text(allQuestions[counter].question);
    $("#next").attr("counter",counter+1);
});

在这里演示

于 2014-07-08T09:29:36.393 回答