2

1秒ごとに設定された間隔内で機能をトリガーするボタンがあります。ボタンの値が停止に変わります。ストップを押したら、clearinterval メソッドを呼び出します。何らかの理由で、クリア インターバル メソッドが機能していません。

これは私の入力です

<input id="trigger" type="button" value="start"/>

私のjs関数

$(function() {
    $('#trigger').click(function() {
        var timerId = 0;
        var trigger = $('#trigger').val();

        if(trigger == 'start') {
            timerId = setInterval(function() {
                $('#trigger').val('stop');
                main();
            }, 1000);
        } else if(trigger == 'stop') {
                clearInterval(timerId);
                $('#trigger').val('start');                
        }
    });
});
4

2 に答える 2

4

timerId は click() のスコープに対してローカルに定義されているため、2 回目に (停止イベントで) 実行すると、再び 0 になります。これを試して

var timerId = 0;
$(function() {
    $('#trigger').click(function() {
        var trigger = $('#trigger').val();

        if(trigger == 'start') {
            timerId = setInterval(function() {
                $('#trigger').val('stop');
                main();
            }, 1000);
        } else if(trigger == 'stop') {
                clearInterval(timerId);
                $('#trigger').val('start');                
        }
    });
});
于 2012-05-21T00:42:31.937 に答える
3

#trigger がクリックされるたびに timerId を再初期化しています。var timerId = 0;クリック機能の外に移動

于 2012-05-21T00:42:56.310 に答える