0

我有一个由开始/停止按钮切换的秒表功能。当按下停止按钮时,计时器停止,并且 jQuery 将一行插入到预先加载到页面上的表中。

我在后台运行了另一个 jQuery 脚本,它不断更新该表以维护新数据。它本质上是一个计时器。

但是,我遇到的问题是,当用户按下停止按钮时,setInterval 负载会继续运行,导致添加的 jquery 字段消失。

我尝试添加一个变量来检查是否按下了停止按钮,如果是,则停止事件......但由于它已经加载到 DOM 中,它似乎不起作用。这是当前代码:

            $.ajax({
                url: 'getData.php',
                success: function(data) {
                    $("#timesheet").html(data);
                }
            });

            var refreshId = setInterval(function() {
                $.ajax({
                    url: 'getData.php?randval='+ Math.random(),
                    success: function(data) {
                        $("#timesheet").html(data);
                    }
                });
            }, 9000);

这是 ajax 正在加载的 HTML 数据:

<table>
<tr><th>Test</th></tr>
<tr><td>Test</td></tr>
</table>

我也尝试过在 tr:last 上使用 append,但这只是将它附加到 tr...而不是创建一个新的 tr。

TL; DR:我希望 setInterval 在按下按钮时不覆盖 jQuery 添加的字段,但似乎不能这样做,因为它被编码为更改整个表。

感谢您的任何建议。

4

3 回答 3

6

没有内置.PauseAPI,但您可以停止它,然后使用相同的功能启动新的间隔。

类似的东西clearInterval,然后再把它放回去。

于 2012-07-15T23:43:46.187 回答
2

ClearInterval 解释

$('#button').click(function()
 {
     clearInterval(refreshId);
 });
于 2012-07-15T23:55:47.637 回答
1
var MyApp ={
 animationID: null,
 speed : 200,
 setAnimation:function(state){
         var obj=this;
         if(state)obj.animationID=setInterval(function() { 
             //your code
             },obj.speed);
         else {
             clearInterval(obj.animationID);
             }
         }
}

开始

MyApp.setAnimation(true);

停止

MyApp.setAnimation(false);
于 2012-07-16T00:28:31.080 回答