我正在开发的项目生成 2 个不同的
p
元素,并且每个元素都是独立触发的。回调后大约需要5秒加载。我无法控制任何这些 p
元素,但要等待它完成加载,以便我可以运行脚本。我正在使用 setInterval()
函数来检查 p
元素之一何时加载。然后,我在 div
元素之前插入一个 p
元素。为此,我将每个 p
元素的类设为 switch statement
。
我遇到的问题是,这将不断地生成 div,并且每次调用后我只需要一次。我可以使用
clearInterval()
停止间隔,但这会完全杀死它并且无法重新启动它,因为即使我调用 setInterval()
函数它也不会再次触发。
有没有一种方法可以让我在没有
setInterval()
的情况下以不同的、更好的方式解决这个问题?
function whichOneisVisible() {
var target = $('.result-content').children("p:first");
switch (target.attr('class')) {
case "available":
console.log('Congrats, this p element is available!');
clearInterval(check);
break;
case "not-available":
console.log('Sorry, this p element is NOT available!');
break;
default:
console.log('Nothing is available!');
}
}
check = setInterval(whichOneisVisible, 550);
html..
<div class="result-content">
<p class="not-available">This P element is not available</p>
<div>This is just a div</div>
<div>This is just a div</div>
<div>This is just a div</div>
</div>
您可以声明一个类似
toggleCheckOnInterval
的函数来启动/停止间隔。或者,对,为此有一个单独的函数。
function whichOneisVisible() {
// ...
}
let check;
function toggleCheckOnInterval {
if (!check) {
check = setInterval(whichOneisVisible, 550);
return;
}
clearInterval(check);
check = null;
}
toggleCheckOnInterval();