#javascript #timeout
Вопрос:
Я пытаюсь остановить таймер, если div ошибка div отображается на странице. Вот код. Я не уверен, почему clearTimeout не останавливает таймер.
<script type="text/javascript">
function timeOutRedirect(){
var delay = 60000; // time in milliseconds
// Show message div
document.getElementById("message").style.display = "block";
// Display message
document.getElementById("message").innerHTML = "<h1>Your order is being processed.</h1>";
setTimeout(function(){
if( document.getElementsByClassName('woocommerce-NoticeGroup-checkout').length != 0 ){
// If error div is loaded
delay = clearTimeout(); //this is n0t clearing timer
document.getElementById("message").style.display = "none";
console.log('error notice div loaded');
} else {
window.location = "/processing-information/";
}
},delay);
}
</script>
<!-- Time out double order timer -->
<div id="message" style="background: #a1f5b9; margin: 10px 0; padding: 10px; text-align: center; display: none; z-index: 99999;"></div>
Комментарии:
1. setTimeout возвращает целое число, которое должно быть передано в clearTimeout
2. Вы могли бы легко поискать в Google описание того, как
clearTimeout
на самом деле работает , что бы четко показало вам, почему ваш код не работает3. Как сказал Хармандип, вы должны передать целочисленный параметр (который определяет конкретный тайм-аут для отмены) в
clearTimeout
4. Привет @Дейв. Добро пожаловать в Stack Overflow. В Stack Overflow люди ценят, чтобы спрашивающие проводили некоторые исследования, прежде чем задавать свой вопрос. Например, если вы выполните поиск в Google по запросу «отменить javascript таймера», вы найдете ссылки на «clearInterval».
Ответ №1:
Если у вас есть интервал, вы можете использовать метод clearInterval ().
const handle = setInterval(function(){...},delay);
...
// Cancel the interval
clearInterval(handle)
Для таймера вы можете использовать метод clearTimeout ().
const handle = setTimeout(function(){...},delay);
...
// Cancel the timer
clearTimeout(handle)
Видишь https://www.w3schools.com/jsref/met_win_cleartimeout.asp
Комментарии:
1. Это не интервал, это тайм-аут. Следует
clearTimeout
ли использовать? MDN говорит, что они могут использоваться взаимозаменяемо, хотя они рекомендуют использовать соответствующие.
Ответ №2:
Может быть, вы можете использовать, например:
Время подсчета = setInterval (() = > console.log(«Тест»), 1000); Очистить время подсчета (время подсчета);
таким образом, вы можете манипулировать переменной countTime для остановки при вызове метода clearInterval.