0

したがって、私のコードでは、要素が何か [ playing] を実行していない場合は、再生を開始します。再生中の場合は、停止します。なんとか再生を開始しましたが、停止しません。

var playing = false;
var current = 30;
$('#countDownContainer').click(function() {
        if (!playing) {
            playing = false;
            setInterval(function() {
                $('#workSpace label').get(0).innerHTML = current;
                current -= 1;
            },1000);
        } else {
            playing = true;
        }
    });

#countDownContainer理論的には、ユーザーがクリックplayingすると false に設定されてsetIntervalコードが実行され、既に再生中の場合playingは true に設定され、ループを通過すると実行されません。しかし、実際には、 から3029と変化し続け30、もう一度ボタンをクリックしても止まりません。助けてください-ありがとう

4

3 に答える 3

1
var clear= setInterval(function() {
                    $('#workSpace label').get(0).innerHTML = current;
                    current -= 1;
                },1000);

    clearinterval(clear);// to stop interval where you want
    //clearInterval(id_of_setinterval)

参照clearInterval

于 2013-08-23T12:18:10.683 に答える
1

まず、変数playingの割り当てを混同していると思います。また、から返された ID を割り当てる必要がありsetIntervalます。これにより、後でその間隔ループを中止できますclearInterval

//initialize var at the start of the script
var intervalID;

// in the onclick event
if (!playing) {
    playing = true; // should be true here
    intervalID = setInterval(function() {
        $('#workSpace label').get(0).innerHTML = current;
        current -= 1;
    },1000);
} else {
    playing = false; // should be false here
    clearInterval(intervalID);
}

clearIntervalのドキュメントを参照してください

于 2013-08-23T12:18:29.190 に答える
1

これを論理エラーと呼びます。

次の点に注意してください。

var playing = false;         // playing is initialised to false

if (!playing) {              // if not playing
        playing = false;     // set playing to false

したがってplaying、 になることはありませんtrue

以下を実行することで解決できます。

var playing = false;
var current = 30;
$('#countDownContainer').click(function() {
    if (playing) {
        playing = false;
    } else {
        playing = true;
         setInterval(function() {
            $('#workSpace label').get(0).innerHTML = current;
            current -= 1;
        },1000);
    }
});

または言葉で:

そうでない場合はplaying、次のように再生します。playing = true;

の場合playing、再生しないようにします。playing = false

補遺

停止問題については、@Riturajratan 彼の質問を参照してください。

于 2013-08-23T12:19:02.370 に答える