Javascript 你不停吗?

Javascript 你不停吗?,javascript,jquery,html,Javascript,Jquery,Html,我以为间隔只是延迟了函数,但事实证明它实际上是循环的 当我在deletor函数结束后包含一些停止间隔的函数时,它不会触发间隔,我仍然会将Test记录到控制台 document.addEventListener(“DOMContentLoaded”),函数(事件){ 让fullURL=window.location.href; //让fullURL2=window.location.host+window.location.pathname; 如果(完整URL==”https://net.adja

我以为间隔只是延迟了函数,但事实证明它实际上是循环的

当我在
deletor
函数结束后包含一些停止间隔的函数时,它不会触发间隔,我仍然会将
Test
记录到控制台

document.addEventListener(“DOMContentLoaded”),函数(事件){
让fullURL=window.location.href;
//让fullURL2=window.location.host+window.location.pathname;
如果(完整URL==”https://net.adjara.com/" ||
完整URL==”https://net.adjara.com/Home") {
var定时器=设置间隔(删除器,5);
函数删除器(){
定时器;
var slider=document.querySelector(“#slider con”);
var bannerTop=document.querySelector(#MainContent>div:n第n个子项(2)”)
var bannermidle=document.querySelector(#MainContent>iframe);
var bannerRandom=document.querySelector(#MainContent>div:nth child(3)”;
如果(滑块){
slider.parentNode.removeChild(slider);
}
如果(bannerTop){
bannerTop.parentNode.removeChild(bannerTop);
}
如果(bannerMiddle){
bannerMiddle.parentNode.removeChild(bannerMiddle);
}
if(bannerRandom){
bannerandom.parentNode.removeChild(bannerandom);
}
函数stopInterval(){
清除间隔(计时器);
}
控制台日志(“测试”);
/*如果()
清除间隔(计时器)*/
};
}否则{
返回false;
}
});

您要查找的是设置超时。它只运行一次

setTimeout(deletor, 5);

此外,您不需要像在Python中那样在闭包中编写timer变量。Javascript捕获词法范围内的所有内容。

您提供的代码有效”\_(ツ)_/“

可能是什么触发了
stopInterval()

但正如在评论/其他答案中所提到的,你最好用另一种方法

我不建议在您的情况下使用setTimeout,因为看起来您只是在等待加载一些DOM元素。超时的问题是,您无法确定运行代码的计算机的速度。可能是一部质量差、软件过时的手机,运行代码所需的时间要比其他手机长得多当您在个人计算机上进行测试时,在执行函数时不会加载元素

jQuery 出于这个原因,并且由于您使用
jQuery
标记了您的问题,我认为您可以对您正在查看的每个元素使用
$(elementYouWaitForTheDOM2beLoaded).ready(function2execute)
,而不是使用等待加载元素的循环(对于“ready”函数)

香草JS
如果您想在纯JS中使用它,它将是
document.querySelector(elementYouWaitForTheDOM2beLoaded)。on('load',function2execute)

setInterval()
以给定的延迟无限重复。您似乎将其与
setTimeout()
混淆,后者仅在延迟时间过后发生一次。您可以尝试使用此
setTimeout(函数(){//do your need here},2000)
您从不调用
stopInterval()
,它本身调用
clearInterval
,然后停止间隔的运行。我确实需要一个间隔,因为setTimer由于某种原因不起作用。@CODER11713没有
setTimer
,函数是
setTimeout
。它的工作原理与
setInterval
相同,只是在运行一次后退出-如果
setInterval
执行您的函数,那么
setTimeout
也会执行。出于某种原因,setTimeout不起作用。据我所知,我删除的广告不断弹出。@CODER11713那么我想可能有一些代码会不断呈现新的广告。您可以尝试这样增加间隔:setTimeout(deletor,500);如果广告代码在URL上添加横幅,则可能会发生更改。你可以试着增加更多。比如1000或2000。但是你也应该考虑研究ADS代码。代码工作,我的问题是我得到控制台。日志(“测试”);仍在控制台中登录。尽管我特别声明了以下内容:函数stopInterval(){clearInterval(timer);}