下面的代碼在單擊開始按鈕時按順序從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); //如果沒有發生超時,將不會執行任何操作。 } –