这是我的代码:
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秒后也是如此。我怎么能这样做?
答案 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;
}