clearInterval变量名称连续调用但未定义

时间:2014-03-28 01:08:08

标签: javascript dom

我试图循环,直到文档对象出现在DOM中。这个想法是window.onload的备份而不使用Jquery或其他框架,但是几个小时之后烦恼地我现在无法看到我的函数声明有什么问题。

我已经玩了很长时间了(试图利用this example)并且我只是在这里寻求帮助作为最后的手段,否则我放弃它。将其调试到控制台会显示它永远不会进入第二个循环。我真的很想了解这里的工作范围,但是在这个网站上查看问题,我看不到任何有关如何带来事物的深入解释" out"循环,因为我习惯于使用return语句和定义全局变量。

我显然误解了一些东西,因为loadingLoop()功能有效,但不会自行循环!如果我在控制台中手动运行它,它会产生所需的效果(将GIF的视频元素替换为简单的浏览器后备)。

 function vid1() { return document.getElementById("id13") }
 function vid2() { return document.getElementById("id12") }

 function loadingLoop() { 
     console.log("loading...");
   setTimeout(function(){

        if(typeof vid1() === "object"){
    var vid1gif = document.createElement('img');
        vid1gif.setAttribute("src","...gif");
        vid1gif.setAttribute("style",vid1().getAttribute("style"));
        return document.getElementById("body_layer").replaceChild(vid1gif, vid1()); 
            loadingLoop()
        }
// Never gets here

        if(typeof vid2() === "object"){
        var vid2gif = document.createElement('img');
        vid2gif.setAttribute("src","...gif");
        vid2gif.setAttribute("style","height: 230px; left: 662px; position: absolute; top: 698px; z-index: 1;");
        return function makeChange() {document.getElementById("body_layer").replaceChild(vid2gif, vid2());};
}

        else {
        console.log("grr...");
            loadingLoop();

   }}, 300);

}

如果我犯了根本性错误,最好不要迟早将它们曝光。我仍然认为自己是这种语言的新手,对我的代码结构的建议会非常棒。

1 个答案:

答案 0 :(得分:-1)

我认为你正在寻找setInterval()而不是setTimeout()