Javascript 间隔不断变化?

Javascript 间隔不断变化?,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,因此,在我的代码中,如果某个元素没有执行某些操作[播放],那么我将开始播放它。如果正在播放,请停止播放。我设法让它开始演奏,但它从未停止过 var playing = false; var current = 30; $('#countDownContainer').click(function() { if (!playing) { playing = false; setInterval(function() {

因此,在我的代码中,如果某个元素没有执行某些操作[
播放
],那么我将开始播放它。如果正在播放,请停止播放。我设法让它开始演奏,但它从未停止过

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;
        }
    });
理论上,当用户单击
#countdowncainer
时,
播放
将设置为false并运行
设置间隔
代码,如果它已经在播放,
播放
将设置为true,并且当通过循环时它将不会运行。但事实上,它一直在从
30
变为
29
再变回
30
。当我再次单击按钮时,它从未停止。请帮忙,谢谢

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)
参考文献


参考

首先,我认为您在玩作业时混淆了var
。
您还应该分配从
setInterval
返回的ID,以便以后可以使用
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);
}

请看

首先,我认为您在播放
作业时混淆了var
。
您还应该分配从
setInterval
返回的ID,以便以后可以使用
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);
}
请参见

,这被称为

因为请注意以下几点:

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

if (!playing) {              // if not playing
        playing = false;     // set playing to false
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);
    }
});
因此,
播放
永远不会成为
真实的

您可以通过执行以下操作来解决此问题:

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

if (!playing) {              // if not playing
        playing = false;     // set playing to false
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=true

如果
播放
,我们将其设置为不播放,因此:
播放=假

附录

有关停止问题,请参阅@Riturajratan他的问题。

这称为停止

因为请注意以下几点:

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

if (!playing) {              // if not playing
        playing = false;     // set playing to false
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);
    }
});
因此,
播放
永远不会成为
真实的

您可以通过执行以下操作来解决此问题:

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

if (!playing) {              // if not playing
        playing = false;     // set playing to false
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=true

如果
播放
,我们将其设置为不播放,因此:
播放=假

附录


关于停止问题,请参考@Riturajratan他的问题。

还有一个问题:它从未停止。还有一个问题:它从未停止。