我试图让表格的第一行每5秒使用javascript删除一次。我的javascript看起来像这样:
setTimeout(function(){
document.getElementById("myTable").deleteRow(0);
}, 5000);
让它在5秒后删除顶行。有没有办法重置setTimeout
以重新开始倒计时?
答案 0 :(得分:0)
将它放在一个函数中并再次调用它。
function deleteRows(){
var t = setTimeout(function(){
document.getElementById("myTable").deleteRow(0);
clearTimeout(t);
deleteRows();
}, 5000);
};
答案 1 :(得分:0)
在这种情况下,您似乎正在寻找setInterval
的功能:
var myTimer = setInterval(function(){
document.getElementById("myTable").deleteRow(0);
}, 5000);
如果您仍想使用setTimeout
,则需要在setTimeout
内调用另一个function(){ ... });
来执行相同的操作。基本上有一个函数可以像setTimeout
一样调用自己:
(function loop() {
document.getElementById("myTable").deleteRow(0);
setTimeout(loop, 5000);
})();
答案 2 :(得分:0)
我会改用setInterval()
。在回调函数内部检查行数,如果行存在则删除它,如果它没有删除时间间隔。
参考:https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval
JS小提琴示例:https://jsfiddle.net/n2yg4fv2/(我使用1秒延迟使其更快)
答案 3 :(得分:0)
您需要使用setInterval
代替setTimeout
。
在这里检查它们之间的区别:JavaScript Timing Events
setTimeout(函数,毫秒):
在等待指定的毫秒数后执行函数。
setInterval(function,milliseconds)
与setTimeout()相同,但是会不断重复执行该函数。
因此,您可以按如下方式重写代码:
var timer = setInterval(function(){
document.getElementById("myTable").deleteRow(0);
}, 5000);
然后,如果要停止执行该计时器功能,可以使用:
window.clearInterval(timer);