下面的代码在单击开始按钮时按顺序从1到10附加数字。我想用clearTimeout
来取消点击停止按钮时的操作。javascript在循环中清除超时
在我看来,必须创建一个动态变量(其中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>
var id = window.setTimeout(function(){},0); (id--){ window.clearTimeout(id); //如果没有发生超时,将不会执行任何操作。 } –