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 で追加を使用しようとしましたが、新しい tr を作成するのではなく、単に tr に追加しただけです。

TL;DR: ボタンが押されたときに jQuery が追加するフィールドを setInterval で上書きしないようにしたいのですが、テーブル全体を変更するようにコーディングされているため、それができないようです。

提案をありがとう。

4

3 に答える 3

6

組み込み.PauseAPI はありませんが、API を停止してから、同じ関数で新しい間隔を開始できます。

のようなもの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 に答える