Javascript setInterval内的setInterval计时器增加
我有一个ajax请求,它使用setInterval每5秒刷新一个页面 在这个ajax请求中,我有另一个setInterval函数,如果条件为真,它每半秒闪烁一次 在最初的ajax调用之后,它似乎工作得很好。但是,每5秒刷新一次ajax刷新,我的闪烁功能计时器就会减半,速度实际上会翻倍 任何帮助都将不胜感激,谢谢 代码如下:Javascript setInterval内的setInterval计时器增加,javascript,jquery,ajax,setinterval,blink,Javascript,Jquery,Ajax,Setinterval,Blink,我有一个ajax请求,它使用setInterval每5秒刷新一个页面 在这个ajax请求中,我有另一个setInterval函数,如果条件为真,它每半秒闪烁一次 在最初的ajax调用之后,它似乎工作得很好。但是,每5秒刷新一次ajax刷新,我的闪烁功能计时器就会减半,速度实际上会翻倍 任何帮助都将不胜感激,谢谢 代码如下: $(document).ready(function() { var refreshRate = 5000; var autoRefresh = setInt
$(document).ready(function() {
var refreshRate = 5000;
var autoRefresh = setInterval(
function () // Call out to get the time
{
$.ajax({
type: 'GET',
success: function(data){
document.getElementById('data').innerHTML=data;
var blink = setInterval (function () {
var blink_cell = $("#blink_div").html();
if (blink_cell > 0) {
$("#blink_div").toggleClass("blink");
} else {
$("#blink_div").addClass("invisible");
}
},500);
} // end success
}); // end ajax call
}, refreshRate);// end check
}); // end ready
关注变量的范围,并在启动新变量之前清除闪烁间隔
$(document).ready(function() {
var refreshRate = 5000;
var blink = -1;
var autoRefresh = setInterval(
function () // Call out to get the time
{
$.ajax({
type: 'GET',
success: function(data){
document.getElementById('data').innerHTML=data;
if(blink>-1) clearInterval(blink);
blink = setInterval (function () {
var blink_cell = $("#blink_div").html();
if (blink_cell > 0) {
$("#blink_div").toggleClass("blink");
} else {
$("#blink_div").addClass("invisible");
}
},500);
} // end success
}); // end ajax call
}, refreshRate);// end check
}); // end ready
您尚未停止旧的
设置间隔
,因此每次调用此选项时,您都会更频繁地闪烁。是否使用clearInterval完成此操作?具体在哪里?如果已经有一个计时器在运行,就不要启动新的计时器。有没有更好的方法来处理这样的事情?如果该div的innerHTML高于0,我需要每半秒闪烁该div的背景色。这很好。您只需检查是否已经运行了setInterval()
。如果你有,你就不必再做了。将blink
放入函数外部的变量中,并检查它是否已设置。谢谢,这正是我想要的。非常有帮助!看起来比我想象的要容易。谢谢你的帮助!这似乎重新编写了一点代码,我并不反对。我只是在合作完成这项工作,所以目前可能并不理想,没有问题;主要是用setTimeout更改setInterval。
$(document).ready(function () {
var _url = ''; // Put your URL here.
var _checkServerTime = 5000;
var _blinkTime = 500;
function _blink() {
// Do something here.
var condition = true; // Put condition here.
if (condition) setTimeout(_blink, _blinkTime);
}
function _handleData(data) {
$('#data').html(data);
_blink();
}
function _checkServer() {
$.get(_url, _handleData);
}
setInterval(_checkServer, _checkServerTime);
});