.equals()
сравнивает данные в классе (при условии, что функция реализована). ==
сравнивает местоположения указателя (расположение объекта в памяти).
==
возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals()
возвращает true, если два объекта содержат одни и те же данные equals()
Versus ==
в Java
Это может вам помочь.
Поскольку вам нужно очистить его, используя clearInterval()...
!
Посмотрите на этот код в качестве ссылки:
https://www.w3schools.com/jsref/tryit .asp? filename = tryjsref_win_clearinterval
var myVar = setInterval(myTimer, 1000);
function myTimer() {
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("demo").innerHTML = t;
}
function myStopFunction() {
clearInterval(myVar);
}
<!DOCTYPE html>
<html>
<body>
<p>A script on this page starts this clock:</p>
<p id="demo"></p>
<button onclick="myStopFunction()">Stop time</button>
</body>
</html>
SetInterval выполняет действие несколько раз в указанный интервал.
В вашем случае вы должны использовать setTimeOut.
var timerConst;
function timer() {
if(timerConst) clearTimeOut( timerConst); // this will clear the previous timeout.
timerConst = setTimeOut(function() {
console.log("Time up");
document.getElementById("timer").innerHTML = "Time Up!";
}, 3000);}
Это отобразит текст через 3 секунды.
При запуске интервала он будет длиться вечно, если вы его не очистите.
Ваш первый интервал, который был запущен при первом вызове, все еще работает в фоновом режиме. Это хорошо видно на примере ниже.
Вы должны использовать clearInterval()
function timer() {
var t = 3;
console.log("timer started t = " + t);
setInterval(function() {
if (t >= 0) {
document.getElementById("timer").innerHTML = t;
console.log(t);
t--;
} else {
console.log("Time up");
document.getElementById("timer").innerHTML = "Time Up!";
}
}, 1000);
console.log("timer stopped t = " + t);
}
<html>
<head>
<script src=timer.js></script>
</head>
<body>
<input type=Reset onclick=timer()> <br>
<hi id="timer"></hi> <br>
</body>
</html>
Каждый раз, когда вы нажимаете кнопку сброса , создается новый интервал. Вот почему, когда вы нажмете кнопку Reset еще раз, ваш вывод на консоль станет беспорядочным.
Функция setInterval возвращает идентификатор созданного интервала, вы можете сохранить его в глобальной переменной, например window.timerInterval .
Внутри функции таймера сначала запустите clearInterval (window.timerInterval) . Поэтому, если есть какие-либо интервалы, созданные и сохраненные в window.timerInterval , clearInterval (window.timerInterval) обязательно прекратит его запуск.
Проверьте и запустите приведенный ниже рабочий пример:
function timer() {
var t = 3;
console.log("timer started t = " + t);
clearInterval(window.timerInterval);
window.timerInterval = setInterval(function() {
if (t >= 0) {
document.getElementById("timer").innerHTML = t;
console.log(t);
t--;
} else {
document.getElementById("timer").innerHTML = "Time Up!";
}
}, 1000);
console.log("timer stopped t = " + t);
}
<html>
<head>
<script src=timer.js></script>
</head>
<body>
<input type=Reset onclick=timer()> <br>
<hi id="timer"></hi> <br>
</body>
</html>