setInterval и ClearInterval. Что-то пошло не так

Итак, я инициализировал свой var с помощью setInterval. Я хочу остановиться и начать это. И я хочу иметь этот контроль так часто, как я хотел бы. это код

<script>
var myVar = setInterval(myTimer, 1000);

function myTimer() {
    var d = new Date();
    var t = d.toLocaleTimeString();
    document.getElementById("demo").innerHTML = t;
}

function myStopFunction() {
    clearInterval(myVar);
}
function myStartFunction() {
    setInterval(myTimer, 1000);
    //setInterval(myVar, 1000);
}
</script>

jsfiddle.net/adeneo/g8jmccfu/1 Я нажимаю кнопку «Удерживать», и она работает хорошо. Затем я нажимаю «Продолжить», и это тоже хорошо работает. А потом я снова нажимаю "Держать"... и это не работает. Я хотел бы оценить любую помощь и любые предложения.


person Areso    schedule 24.09.2017    source источник
comment
JSFiddle изменяет область действия окна JS, поэтому оно больше не является глобальным. Вам просто нужно изменить настройку на отсутствие переноса... -› jsfiddle.net/adeneo/g8jmccfu/ 1   -  person adeneo    schedule 24.09.2017


Ответы (2)


Вы забыли переназначить новый идентификатор таймера на myVar (который я назвал interval):

var interval = setInterval(myTimer, 1000);

function myTimer() {
    // ...
}

function myStopFunction() {
    clearInterval(interval);
}
function myStartFunction() {
    interval = setInterval(myTimer, 1000);
}

Ваша переменная по-прежнему содержала идентификатор старого интервала, из-за чего clearInterval(myVar) ничего не делал.

person PeterMader    schedule 24.09.2017

Используйте этот код, вам нужно определить переменную

   var myVar;
    function myTimer() {
        var d = new Date();
        var t = d.toLocaleTimeString();
        document.getElementById("demo").innerHTML = t;
    }

    function myStartFunction() {
        myVar = setInterval(myTimer, 1000);
    }

    myStartFunction();

    function myStopFunction() {
        clearInterval(myVar);
    }
person Yaser Morteza    schedule 24.09.2017