有没有函数或方法可以阻止 setinterval 函数在 jQuery 或 JS 中的匹配后继续运行?

问题描述 投票:0回答:1

我正在开发的项目生成 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>
javascript jquery setinterval clearinterval
1个回答
0
投票

您可以声明一个类似

toggleCheckOnInterval
的函数来启动/停止间隔。或者,对,为此有一个单独的函数。

function whichOneisVisible() {
    // ...
}

let check;
function toggleCheckOnInterval {
    if (!check) {
        check = setInterval(whichOneisVisible, 550);
        return;
    }
    clearInterval(check);
    check = null;
}
toggleCheckOnInterval(); 
© www.soinside.com 2019 - 2024. All rights reserved.