在jQuery/javaScript中遍历对象数组(依赖于时间的迭代)

在jQuery/javaScript中遍历对象数组(依赖于时间的迭代),javascript,jquery,arrays,Javascript,Jquery,Arrays,我是javaScript和jQuery的初学者。我想创建一个只有两个选项的问答游戏 我有一个如下所示的对象数组: var question = []; question[0] = { value: "someText here", ans: true }; 我将把我所有的问题写成这个对象的数组。这是一个纯粹有趣的游戏,因此如果用户打开源代码并阅读问题,就不会有任何问题。 我想用jQuery来说明这个问题。 为了展示,我写了以下内容: $(

我是javaScript和jQuery的初学者。我想创建一个只有两个选项的问答游戏

我有一个如下所示的对象数组:

  var question = [];

    question[0] = {

        value: "someText here",
        ans: true
    };
我将把我所有的问题写成这个对象的数组。这是一个纯粹有趣的游戏,因此如果用户打开源代码并阅读问题,就不会有任何问题。 我想用jQuery来说明这个问题。 为了展示,我写了以下内容:

$("#someID").text(question[i].value); // where i is some random variable
然后我可以调用.click方法并检查用户单击了什么按钮,然后相应地处理情况(更改分数、减少寿命等)。 现在,我想根据时间遍历这个对象数组,这意味着,每个问题都会在屏幕上保留15秒左右,如果用户按下两个按钮中的任何一个,那么下一个问题会立即出现,其他参数也会相应地改变。但是,如果用户在15秒钟内没有按下任何按钮,则会出现下一个问题。我该怎么做

在发布此问题之前,我付出了很多努力:

这个链接上的第一个答案告诉我一些接近我想要实现的东西,但它将其数据放在
标记中,这是我不想要的。我严格地想把它作为对象数组。 有没有办法做到这一点?多谢各位

编辑------

不幸的是,这段代码不适合我。它只是给了我一个警告框,问题在屏幕上没有改变。有什么原因我错了吗?注意:web控制台中没有错误

编辑#2--- 这是我的HTML

<!DOCTYPE html>
<html>
<head>
    <title>Serious or Joking</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="script.js"></script>
</head>
<body>
    <div id="timer">
        <p>00</p>
    </div>


    <input type="button" value="true" class="answer" id="truebutton" />
    <input type="button" value="false" class="answer" id="falsebutton"/>


</body>
</html>

严肃的还是开玩笑的
00


我在visualstudio工作

据我所知,你只需要休息一下

编辑:以下是使用您的代码进行的更新:

var score=0, // variable to store the score of the user.
    counter=0;
    $(function () {
        fetchNextQuestion(); 
    });

    function fetchNextQuestion() {
        counter++;
        if (counter >= 5) {
            endTheGame();
        }
        else {
            number = Math.floor(Math.random() * 10);
            $("#timer").text(question[number].value);
            _qtimer = setInterval(fetchNextQuestion, 15000);
            $(".answer").off().on('click', userHasDoneSomething);
        }
    }

    function userHasDoneSomething() {
        clearInterval(_qtimer);
        if (Boolean(question[number].ans) == Boolean(this.value))    score++;
        else                                    score--;

        fetchNextQuestion();
    }
    function endTheGame() {
        alert("The game has ended! Your score is "+ score);
    }

注意:给你的“真”和“假”元素一个类(.answer)

你能告诉我们到目前为止你做了什么吗?如果没有它,我们就无法真正帮助您解决问题。从您的问题来看,如果用户在15秒内没有单击,您只需将[i]索引更改为下一个问题。。是吗?@webkit是的,没错。从
setInterval(fetchNextQuestion,15000)中删除
()
您希望传递回调函数,而不是立即初始化它…请阅读我对问题所做的编辑(基于您的答案)。谢谢。当然,我认为问题是当事件发生时必须调用userhasdonesmething()。。我将更新我的答案,看看它是否适用于您。我想您还需要从
设置间隔(fetchNextQuestion,15000)中删除
()
代码行。您希望提供回调函数,而不是立即初始化函数…@user3763293 War10ck的最后一条注释可能是导致回调的原因,请注意上面代码中的更改(删除了()),然后重试。。让我知道结果,我正在检查你的身份证是真是假。。现在我看到了你的html,我将把它改为value。。我已经更新了我的答案。请注意,我只将this.id更改为this.value
var score=0, // variable to store the score of the user.
    counter=0;
    $(function () {
        fetchNextQuestion(); 
    });

    function fetchNextQuestion() {
        counter++;
        if (counter >= 5) {
            endTheGame();
        }
        else {
            number = Math.floor(Math.random() * 10);
            $("#timer").text(question[number].value);
            _qtimer = setInterval(fetchNextQuestion, 15000);
            $(".answer").off().on('click', userHasDoneSomething);
        }
    }

    function userHasDoneSomething() {
        clearInterval(_qtimer);
        if (Boolean(question[number].ans) == Boolean(this.value))    score++;
        else                                    score--;

        fetchNextQuestion();
    }
    function endTheGame() {
        alert("The game has ended! Your score is "+ score);
    }