javascript清除循环中的超时
单击“开始”按钮时,下面的代码按1到10的顺序追加数字。单击停止按钮时,我想使用javascript清除循环中的超时,javascript,loops,timeout,Javascript,Loops,Timeout,单击“开始”按钮时,下面的代码按1到10的顺序追加数字。单击停止按钮时,我想使用clearTimeout取消操作 在我看来,必须创建一个动态变量(其中x当前被分配了doSetTimeout函数),但我还没有找到这样做的方法。有什么建议吗 谢谢 <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script>
clearTimeout
取消操作
在我看来,必须创建一个动态变量(其中x当前被分配了doSetTimeout
函数),但我还没有找到这样做的方法。有什么建议吗
谢谢
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
function doSetTimeout(func, func_param, time) {
setTimeout(function(){func(func_param);}, time);
}
function createNode(base) {
var node = document.createElement("p");
var writeI = base + "";
var textnode = document.createTextNode(writeI);
node.appendChild(textnode);
document.body.appendChild(node);
}
$(document).ready(function() {
$("#start").click(function() {
for (var i = 1; i <= 10; i++) {
var time = i*1000;
var x = doSetTimeout(createNode, i, time);
}
});
});
</script>
</head>
<body>
<button id="start">Start</button>
<button id="stop">Stop</button>
</body>
函数doSetTimeout(func,func_参数,时间){
setTimeout(function(){func(func_param);},time);
}
函数createNode(基本){
var节点=document.createElement(“p”);
var writeI=base+“”;
var textnode=document.createTextNode(writeI);
node.appendChild(textnode);
document.body.appendChild(节点);
}
$(文档).ready(函数(){
$(“#开始”)。单击(函数(){
对于(var i=1;i获取setTimeout
的返回值,将其保存在列表中,并在单击“停止”时将其清除
函数doSetTimeout(func,func_参数,时间){
返回setTimeout(function(){func(func_param);},time);
}
$(文档).ready(函数(){
var超时=[];
$(“#开始”)。单击(函数(){
对于(var i=1;i var id=window.setTimeout(function(){},0);而(id--){window.clearTimeout(id);//如果没有id为的超时,则不会执行任何操作。}单击“停止”按钮时,不会发生任何事情。它贯穿整个序列。
function doSetTimeout(func, func_param, time) {
return setTimeout(function(){func(func_param);}, time);
}
$(document).ready(function() {
var timeouts = [];
$("#start").click(function() {
for (var i = 1; i <= 10; i++) {
var time = i*1000;
timeouts.push(doSetTimeout(createNode, i, time));
}
});
$("#stop").click(function () {
for (var i = 0; i <= timeouts.length; i += 1) {
clearTimeout(timeouts[i]);
}
});
});