JavaScript代码在代码运行期间不会执行,但是当我调试它并在控制台中执行时,它可以工作

时间:2015-08-25 12:24:43

标签: javascript google-chrome-devtools

我有以下代码:

var e = document.getElementById("overlay");
e.parentNode.removeChild(e);

这段代码应该删除DOM元素,但事实并非如此。所以我删除了代码并添加了一个断点,并在暂停期间手动输入控制台中的代码,并且它工作正常(即元素已成功删除)。

这种行为对我来说似乎很奇怪,所以我想问一下,为什么会发生这种情况,我该怎么做才能检查这个奇怪的问题呢?

提前致谢。

编辑:感谢您快速回复。尽管如此,我想非常清楚地表明元素#overlay在执行代码时确实存在。此外,当我在代码中的那个地方放置一个调试断点并执行这两行代码时,它确实对这个特定的存在元素产生了影响(没有调试它就没有了。)

编辑2:我被要求澄清代码。我在body queryloader2 插件的一部分,确保图像预加载)之前执行以下代码:

window.addEventListener('DOMContentLoaded', function() {
    new QueryLoader2(document.querySelector("body"), {});
});

不存在任何错误(由于缺少图像而导致404错误,但对Javascript没有影响)。

2 个答案:

答案 0 :(得分:1)

正如Teemu提到的那样#overlay在代码运行时很可能不存在。

对于测试..尝试将代码包装在其中任何一个......

Javscript

window.onload = function () { /*your code*/ };

Jquery(如果包含)

$(document).ready(function () { /* your code*/ });

答案 1 :(得分:0)

您应该在DOM树加载完成后执行代码。一种选择是将代码包装在一个在触发DOMContentLoaded事件后执行的函数中。

document.addEventListener("DOMContentLoaded", function(event) { 
  // your code
});

请查看此答案以获取更多信息:$(document).ready equivalent without jQuery