如何停止setInterval? clearInterval不起作用

时间:2017-04-17 20:31:03

标签: javascript boolean clearinterval

我想要移动和停止程序。 这个程序只有一个按钮。按钮是程序的全部。 是的,这是超级简单的程序。 该计划的问题是球不会停止。

{{1}}

我想要的是当我点击拍摄按钮时,球应移动, 再次点击,停止。 执行我的代码,单击一次,球正确移动。再次点击,它不会停止。这是我的问题。 如何阻止球?

2 个答案:

答案 0 :(得分:1)

问题在于,每次按下按钮都会重置// Save outside of the function so it will keep it's value var timeoutID; document.getElementById('clickMe').addEventListener('click', function() { // Notice that I'm not re-assigning timeoutID // every time I click the button if (timeoutID) { console.log('Stopped'); clearInterval(timeoutID); // Clear out the ID value so we're ready to start again timeoutID = null; } else { timeoutID = setInterval(function() { console.log('Rolling...'); }, 500); } });。将该值保存在函数之外,它就可以正常工作。



<button id="clickMe">Start/Stop</button>
&#13;
{{1}}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

var moving = false;
var interval;

// handle the click
function handleClick() {
    // if moving set moving to false, otherwise set it to true
    moving = moving ? stop() : start();
}

// start the interval that calls move function and set moving to true
function start() {
    moving = true;
    interval = setInterval(function() {
        move();
    }, 500);
}

// clear the interval and set moving to false
function stop() {
    moving = false;
    clearInterval(interval);
}