我有一个高音扬声器。 Feed会显示一个带有动画的小div
,首先会检查div
display
属性是否为:none
,如果是,则切换可见性并从a json写入一些信息文件。但是,如果它display: block
隐藏'div'。
现在我想使用函数内部的'if''else'来改变'setInterval'的'delay'值。但我无法改变它?
$(document).ready(function() {
$.ajaxSetup({ cache: false });
var delay = 2000;
setInterval(function() {
var isVisible = $('#container').css("display") == "none";
if(isVisible) {
delay = 10000;
$("#container").toggle( "clip", "slow" );
$.getJSON('data.json', function (data) {
document.getElementById("user").innerHTML = "<h1>@"
+ data.user.screen_name + "</h1>";
});
}
else {
delay = 1000;
$("#container").toggle( "clip", "slow" );
}
}, delay );
});
谢谢!
答案 0 :(得分:0)
要更改您需要清除现有间隔并创建新间隔的间隔。
var interval = setInterval(callback, delay);
clearInterval(interval);
interval = setInterval(callback, newDelay);
将时间间隔和超时分配给var
始终是个好主意。然后,您可以通过clearTimeout
或clearInterval.
答案 1 :(得分:0)
对于您的情况,您可以尝试使用setTimeout:
$(document).ready(function() {
$.ajaxSetup({ cache: false });
var delay = 2000,
toggleDiv;
toggleDiv = function() {
var isVisible = $('#container').css("display") == "none";
if(isVisible) {
setTimeout(toggleDiv, 10000);
$("#container").toggle( "clip", "slow" );
$.getJSON('data.json', function (data) {
document.getElementById("user").innerHTML = "<h1>@"
+ data.user.screen_name + "</h1>";
});
}
else {
setTimeout(toggleDiv, 1000);
$("#container").toggle( "clip", "slow" );
}
};
setTimeout(toggleDiv, delay);
});