我试图循环,直到文档对象出现在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);
}
如果我犯了根本性错误,最好不要迟早将它们曝光。我仍然认为自己是这种语言的新手,对我的代码结构的建议会非常棒。
答案 0 :(得分:-1)
我认为你正在寻找setInterval()而不是setTimeout()