我想在 setInterval 結束后再次運行它,但是在 Ajax 中運行它后,它開始顯示奇怪的數字。下圖中就很清楚了。
當我運行頁面時,setInterval 有效,但是當時間到期并且我發出 ajax 請求時,它不會再次開始遞減。請幫我。
我所有的代碼都是。
const TIME_LIMIT = 10; // 10 second
let timePassed = 0;
let timeLeft = TIME_LIMIT;
let timerInterval = null;
function onTimesUp() {
clearInterval(timerInterval);
}
function startTimer() {
timerInterval = setInterval(() => {
timePassed = timePassed = 1;
timeLeft = TIME_LIMIT - timePassed;
document.getElementById("dividname").innerHTML = formatTime(
timeLeft
);
if (timeLeft === 0) {
onTimesUp();
}
}, 1000);
}
function formatTime(time) {
const minutes = Math.floor(time / 60);
let seconds = time % 60;
if (seconds < 10) {
seconds = `0${seconds}`;
}
return `${minutes}:${seconds}`;
}
這是我發送請求并成功執行的 Ajax 代碼,但 setInterval 未正確執行。(我把圖片放在下面)。
$.ajax({
type: 'POST',
url: aw_ajax_url,
dataType: 'json',
data: {
'action': 'acttionname',
},
success: function (data) {
onTimesUp();
document.getElementById("dividname").text = timeLeft;
startTimer();
}
});
重新啟動 Ajax 后的影像:很難過

最后說明:我想setInterval to restart every time提出一個 Ajax 請求。謝謝您的幫助。
uj5u.com熱心網友回復:
我認為您忘記重置 timeLeft 和 timePassed。此外,設定 innerText 是不必要的,因為它已經由計時器處理。它應該是這樣的:
success: function(data) {
onTimesUp();
timePassed = 0;
timeLeft = TIME_LIMIT;
startTimer();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/526421.html
標籤:javascriptjQuery阿贾克斯设置间隔倒计时器
