在JavaScript中循环睡觉吗?(Sleep in javascript loop?)

2019-09-22 08:39发布

我将解释它是什么,我试图做的开始:)

我的应用程序是使用PHP(Zend框架)和JavaScript来实现。 我希望做一个问卷调查我的应用程序,到目前为止,我已经做了以下内容:

我的网页由一系列的<div class='question #'>其中#表示spesific问题的索引元素。 例如我的HTML看起来像这样:

<div class="question 1 active">
</div>
<div class="question 2">
</div>
<div class="question 3">
</div>
.
.
.
etc.

现在,用户应该可以看到一个spesific每个问题预先选定的时间,直到问题变成了可能的答案,用户应单击“是”或“否”,取决于他是否认为答案是正确的。 仅一个<div class="question #"> -元素是活动的时候,其他人display:none; 。 问题是改变到下一个后, active -attribute从当前问题删除,因此用户遍历所有的问题设置为下一个。

对于每个question/possible answer -pair我有关联的两个整数其中spesify用户多久有时间来看看这个问题,用户有时间来回答这个问题有多长。 让我举个例子吧:

用户看到此(或多或少):

QUESTION 1/10

The name of the President of U.S.? -------------- 5 sec 
..
The name of the President of U.S.? -------------- 4 sec
..
The name of the President of U.S.? -------------- 3 sec
..
etc. THE TIME ENDS and the question changes to answer mode(buttons YES/NO appear also in this part):

Bruce Wayne? ------------------------------7 sec 
 [YES] [NO]  
...
Bruce Wayne? ------------------------------6 sec 
 [YES] [NO]  
...
Bruce Wayne? ------------------------------5 sec 
 [YES] [NO]  
...
etc. 

当任一时间用完在ANSWER相或用户点击任一按钮的YES / NO的jQuery移除ACTIVE从当前问题,并将其设置到下一个。 用户点击的值也存储在隐藏元件。 这个过程要重复所有的方式通过问卷。

现在关于这两个问题和答案阶段的定时器。 他们不是固定的,但spesified对于每一个问题。 例如question1可能有问题/答案的时间(单位:秒) 5/10等等。

现在的问题是...如何实现这种在JavaScript端??? 我的问题是当我在循环通过数组的JavaScript包含所有有关问题(这PHP设置在服务器)的信息......我应该能够通过所有迭代在question/answer -pairs在客户端,然后在每次迭代从移动到下一个(下一个问题),直到用户点击的答案或时间已用完停止迭代。 但问题是,我明白,我不能在for循环,或在jQuery的。每次睡觉......你看我的问题? :)

在实施任何建议表示赞赏:)

Answer 1:

更改for循环通过的setTimeout称为递归函数

var timeLeft = 10,
    countdown = function(){
        $('#mySpan').html('The name of the President of U.S.? -------------- ' + timeLeft + ' sec');
        timeLeft -= 1;

        if (timeLeft) {
            setTimeout(countdown, 1000);
        }
    };

countdown();

采取的逻辑和可以延长它以X秒后改变您的问题等,然后就可以通过取像参数缩放maxTimequestionTextquestionType以显示输入字段或设置例如单选按钮。

快速演示: http://jsfiddle.net/AlienWebguy/aW9mH/



Answer 2:

下面是一个古怪的方式做到这一点,我一直与最近尝试一点点。 我没有必要建议你做这样的事没有感觉自信你了解它,但它是整齐的玩弄。

function countdown(loops, pause, id) {
    (function setup(timer, el, text) {
        (function loop(invalid) {
            (function check(stop) {
                return stop || !loops-- || timer(loop, pause);
            })(invalid || !loops, el[text] = loops);
        })(!loops || !pause);
    })(setTimeout, document.getElementById(id) || {}, 'innerHTML');
}​

countdown(10, 1000, 'timer');

http://jsfiddle.net/userdude/ghN3m/1

这是一个有点奇怪寻找,但它是有趣的实验。



Answer 3:

JavaScript是有做一个网站的反应积极。

因此,它不应该只是走死了。

如果它只是去死你的客户是出了门



文章来源: Sleep in javascript loop?