LE2。任何其他想法如何解決這個問題?javascript檢查元素是否可見並相應地設置「setInterval」
我有這樣的代碼,並想不通爲什麼工作不正常:
$(function autorun() {
if ($("#contactForm").is(":visible")){
setInterval("refreshAjax();", 150000000000);
}
else {
setInterval("refreshAjax();", 15000);
}
setTimeout("autorun();", 2000)
});
...
<body onLoad="autorun()">
現在即使它不斷刷新頁面,每2秒, 「contactForm」是可見的。
我的邏輯是:如果「contactForm」可見,則延遲刷新或停止刷新,繼續檢查,但同時相應地刷新頁面到其他語句。
LE。
$(function() {
refreshAjax = function(){$("#flex1").flexReload();
}
});
LE2。最終的解決方案通過@Nick Craver提供here
$(function() {
var ajaxTimeout;
function autorun() {
if ($("#contactForm").is(":visible")){
if(ajaxTimeout) {
clearInterval(ajaxTimeout);
ajaxTimeout = false;
}
}
else if(!ajaxTimeout) {
ajaxTimeout = setInterval(refreshAjax, 15000);
}
}
setInterval(autorun, 2000);
});
感謝, 克里斯蒂安。
什麼是自動運行和refreshAjax?爲什麼頁面會每2秒刷新一次,而不是每1.5秒刷新一次? – 2010-10-30 07:34:53
refreshAjax刷新flexigrid和自動運行我試圖檢查「contactForm」是否可見,所以我可以停止或繼續刷新flexigrid。如果flexigrid在刷新時顯示「contactForm」,則疊加層存在問題。謝謝。 – Chris19 2010-10-30 08:16:52