gpt4 book ai didi

javascript检查元素是否可见并相应地设置 "setInterval"

转载 作者:行者123 更新时间:2023-11-30 10:53:16 29 4
gpt4 key购买 nike

LE2。关于如何解决此问题的任何其他想法?

我有这段代码,但不知道为什么不能正常工作:

$(function autorun() {

if ($("#contactForm").is(":visible")){
setInterval( "refreshAjax();", 150000000000 );
}
else {
setInterval( "refreshAjax();", 15000 );
}
setTimeout("autorun();", 2000)
});

...

<body onLoad="autorun()">

现在,即使“contactForm”可见,它也会每 2 秒刷新一次页面。

我的逻辑是:如果“contactForm”可见,延迟刷新或停止刷新,继续检查,但同时根据其他语句刷新页面。

乐。

$(function() {
refreshAjax = function(){$("#flex1").flexReload();
}
});

LE2。提供最终解决方案 here通过@Nick Craver

$(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);
});

谢谢,克里斯蒂安。

最佳答案

目前您正在创建很多间隔计时器,这并不好。我不知道这是否能解决您的问题,因为除此之外,您的代码看起来还不错。

试一试:

var ajaxTimeout;

function autorun() {
if ($("#contactForm").is(":visible")){
if(ajaxTimeout) {
clearInterval(ajaxTimeout);
ajaxTimeout = false;
}
}
else if(!ajaxTimeout) {
ajaxTimeout = setInterval(refreshAjax, 15000);
}
}


$(function() {
setInterval(autorun, 2000)
});

请记住时间以毫秒为单位。

更新:@tec 有另一个有趣的解决方案。因此,这取决于您实际希望通过代码实现的目标。

关于javascript检查元素是否可见并相应地设置 "setInterval",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057640/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com