JS中有一个定时器代码:
var interval;
function StartNewTimerFunction(el) {
var time = el.innerHTML;
if((time.valueOf()!= "") & (time.valueOf()!= "закончен") & (time.valueOf()!= "закінчено")) {
var arr = time.split(":");
var minutes = arr[0];
var seconds = arr[1];
// Set the timer
interval = setInterval(function() {
if(seconds == 0) {
if(minutes == 0) {
(el.innerHTML = "закончен");
clearInterval(interval);
return;
} else {
minutes--;
if (minutes < 10) minutes = "0" + minutes;
seconds = 60;
}
}
seconds--;
if (seconds < 10) seconds = "0" + seconds;
el.innerHTML = minutes+":"+seconds;
}, 1000);
}
else return;
}
停止计时器:
function StopActiveTimerFunction() {
clearInterval(interval);
}
在所需数量的类似请求中启动计时器的代码 - 每个都有自己的计时器 DIV 块:
function startTimer(class_Name) {
var my_timer = document.getElementsByClassName(class_Name);
for(var x = 0; x < my_timer.length; x++) {
countdown(my_timer[x]);
}
}
ajax请求(表单处理):
function set_bet_in_auction(element) {
var form = $(element);
var formForResponse = element;
$.ajax({
type: "POST",
url: "/set-price-in-auction/",
data: form.serialize(),
success: function (data) {
*..... тут разные проверки данных и т.д....*
price_div.innerHTML = data.setPrice;
price_div.style.color = "red";
price_top_div.style.backgroundImage = image_key_horizontal;
add_executor_info_flag(centralpart_div,
data.executorNickname, data.executorRate);
price_bottom_div.style.background = button_auction;
set_price_popup.style.display = "none";
price_timer_div.innerHTML = "60:00";
StopActiveTimerFunction();
StartNewTimerFunction(price_timer_div);
price_timer_div.style.visibility = "visible";
}
},
error: function (data) {
console.log('An error occurred.');
console.log(data);
},
});
带有计时器的 div 元素属于同一类型 - 请求列表,但每个都有自己独立的计时器,该计时器以“60:00”格式从数据库接收的值开始。在这种情况下,一切正常。
该应用程序的功能通过用户操作在单个请求中提供定时器的定期更新。更新是通过 AJAX 进行的,即无需重新加载页面。
问题是,当特定应用程序中的计时器重新启动时,我无法将其停止,这会导致第二个计时器启动而不停止第一个计时器。
该功能clearInterval(interval);
适用于一个特定的计时器,但如果有很多,它会立即停止,而不是我需要的。问题是,是否有可能以某种方式将计时器写入变量并将其附加到 div 块,以便您可以从同一个块中获取它并停止它?
1 个回答