试图创建一个删除自己的表行

时间:2015-11-15 20:20:28

标签: javascript

我试图让表格的第一行每5秒使用javascript删除一次。我的javascript看起来像这样:

setTimeout(function(){ 
    document.getElementById("myTable").deleteRow(0);   
}, 5000);

让它在5秒后删除顶行。有没有办法重置setTimeout以重新开始倒计时?

4 个答案:

答案 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);