Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript clearInterval不';t间隙 var定时器; 功能检查\u元素\u加载(){ 计时器=window.setInterval(函数(){ console.log(“仍在工作”);//永远保持运行 if(document.getElementById(“注释”)){ console.log(“FOUND”);//这实际上是在运行 document.getElementsByTagName(“fb:comments”)[0].setAttribute('order_by','social'); 窗口。清除间隔(计时器);//_Javascript_Function_Setinterval_Dom Events_Clearinterval - Fatal编程技术网

Javascript clearInterval不';t间隙 var定时器; 功能检查\u元素\u加载(){ 计时器=window.setInterval(函数(){ console.log(“仍在工作”);//永远保持运行 if(document.getElementById(“注释”)){ console.log(“FOUND”);//这实际上是在运行 document.getElementsByTagName(“fb:comments”)[0].setAttribute('order_by','social'); 窗口。清除间隔(计时器);//

Javascript clearInterval不';t间隙 var定时器; 功能检查\u元素\u加载(){ 计时器=window.setInterval(函数(){ console.log(“仍在工作”);//永远保持运行 if(document.getElementById(“注释”)){ console.log(“FOUND”);//这实际上是在运行 document.getElementsByTagName(“fb:comments”)[0].setAttribute('order_by','social'); 窗口。清除间隔(计时器);//,javascript,function,setinterval,dom-events,clearinterval,Javascript,Function,Setinterval,Dom Events,Clearinterval,我试图在上面放置一个脚本,以不断检查特定元素是否已成功加载到浏览器中,它可以工作(控制台记录为“find”),但当我编写另一个控制台日志以查看间隔是否仍在运行时。确实如此,它从不停止,clearInterval被完全忽略 有什么我错过的吗?我还尝试使用所有其他解决方案,包括settimeout,现在最接近我的是write,我只希望clearinterval在条件返回true后生效 是否有任何类似于clearinterval的东西更有效,杀死整个函数或其他东西?目前,您的 var timer;

我试图在上面放置一个脚本,以不断检查特定元素是否已成功加载到浏览器中,它可以工作(控制台记录为“find”),但当我编写另一个控制台日志以查看间隔是否仍在运行时。确实如此,它从不停止,
clearInterval
被完全忽略

有什么我错过的吗?我还尝试使用所有其他解决方案,包括
settimeout
,现在最接近我的是write,我只希望
clearinterval
在条件返回true后生效

是否有任何类似于clearinterval的东西更有效,杀死整个函数或其他东西?

目前,您的

var timer;

function check_element_load(){
    timer = window.setInterval(function(){
        console.log("still working"); // keeps running forever
        if(document.getElementById("comments")){
            console.log("FOUND"); // this actually runs
            document.getElementsByTagName("fb:comments")[0].setAttribute('order_by', 'social');
            window.clearInterval(timer); // < not effective
        }
    }, 50);
}


check_element_load();
抛出一个错误,(当然)超时将。你可以


调用
getElementsByTagName(“fb:comments”)
很可能返回一个空集,这会导致“method setAttribute在未定义的元素上不存在”类型错误。

该行是否被命中?
文档中可能有错误。getElementsByTagName…
行。@JamesMcLaughlin这行工作正常,除了ClearInterval之外,其他一切都正常工作。这并不是说这有什么区别,但为什么你有两个
计时器
变量?@JamesMcLaughlin很好,认为可能是它造成的,只是尝试删除
var
和相同的结果。edited@Osa这个的标记是什么<代码>文档.getElementsByTagName(“fb:comments”)[0].setAttribute('order_by','social')你所说的行是正确的,它会返回false/错误,因为你没有设置facebook(
fb:comments
)标记xmlns,你可以在普通标记上进行测试,但是我刚刚尝试完全删除该行,我得到的结果是相同的,问题似乎来自
if
条件,它不能正确地返回
true
,其目的是检查元素exists@Osa这种情况不可能发生,因为您声明执行了console.log(“found”)。所以误差必须正好在这条线上。或者有其他代码干扰了您没有发布到此处的代码。@我能想到的唯一问题是,您可能有其他代码干扰了
timer
变量?唯一运行的代码是我编写的代码,没有任何问题,我尝试了所有的方法,这似乎是我所经历过的最让人困惑的代码,我很确定问题来自浏览器或者电脑出了问题,但是我想我会采取另一个方向,我只是尝试添加一个facebook按属性排序,我认为这可以通过默认的facebook sdk设置来完成,而不是添加属性或设置something@Osa这可能确实是更好的办法。如果你解决了这个问题,写一个答案并接受它来标记你的问题已经解决。我对这个问题是如何发生的很感兴趣。
document.getElementsByTagName("fb:comments")[0].setAttribute('order_by', 'social');