JavaScript setTimeout无法使用提示框

时间:2012-04-19 17:30:04

标签: javascript

这是我的代码:

var t = setTimeout("increment();", 1000 * 3);

var st;

function increment() {
    st = 1;
}

for (i = 0; i < 10; i++) {

    cnt = i;
    var no1 = Math.floor(Math.random() * 101);
    var no2 = Math.floor(Math.random() * 101);

    if ((i % 4) == 0) {
        crct_ans[i] = no1 + no2;
        quest[i] = no1 + " + " + no2;
    }
    else if ((i % 4) == 1) {
        crct_ans[i] = no1 - no2;
        quest[i] = no1 + " - " + no2;
    }
    else if ((i % 4) == 2) {
        crct_ans[i] = no1 * no2;
        quest[i] = no1 + " x " + no2;
    }
    else if ((i % 4) == 3) {
        crct_ans[i] = no1 / no2;
        quest[i] = no1 + " / " + no2;
    }

    ans[i] = prompt(quest[i], "");

    if (st == 1) break;
}​

如果3秒过去,我想停止for循环。但这不起作用。对于循环运行3秒后也是如此。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

删除()并引用如下:

var t = setTimeout(increment, 3000);
  • 删除()会立即禁用该功能的运行,而setTimeout需要使用callabck。
  • 删除引号可确保在幕后不使用eval

顺便说一下,最好使用单个var关键字声明所有变量,如下所示:

var t = setTimeout(increment, 3000), st;

答案 1 :(得分:1)

尝试格式化:

var t = setTimeout(function(){increment();}, 3000);

答案 2 :(得分:1)

如果它符合您的要求,您只需检查通过的时间。

示例:

var start = new Date();

for(i = 0; i < 10; i++){
    var end = new Date();
    var elapsed = end.getTime() - start.getTime();

    if (elapsed >= 3000)
        break;
}​