我正在使用javascript和jquery开发一个网站。有时当我刷新时,我只会在firebug中得到不同的随机错误。这是什么交易?
编辑:我收到的错误就像变量未定义,当它显然正常工作时,当我再次刷新时,错误消失了..
使用Firefox V3.5.5 Firebug V.1.5.3,我主要使用jQuery 1.4.2
答案 0 :(得分:3)
行。虽然或多或少不可能给出这样一般性问题的合理解决方案,但我只需加上2美分的价值:
“未定义变量”错误的一个可能来源是包含多个脚本,这些脚本可能或可能不会始终以相同的顺序加载和执行。如果您在一个脚本中定义变量(让我们调用该脚本declare.js
)并在另一个脚本中使用它(比如说use.js
),use.js
在declare.js
之前执行,那么你会得到这样的错误。如果脚本执行相反的操作,一切都会正常显示。
如果您对此主题感兴趣,请查看例如:史蒂夫·索德斯的书 Even faster web sites ,由O'Reilly出版。更具体地说,请查看有关非阻塞脚本加载的章节。
答案 1 :(得分:1)
最常见的原因是你在加载DOM之前尝试执行Javascript ,因此在DOM树中所有HTML元素都可用之前,这反过来可能导致像{这样的简单调用{1}}和jQuery的document.getElementById(id)
可能会返回未定义的元素。它有时有效是纯粹的巧合和时间问题。
您需要确保在页面加载期间应该执行的任何Javascript / jQuery代码依赖于DOM树中元素的可用性,在 DOM之后也确实执行了加载。在普通的香草JS中你可以这样做:
$(selector)
并在jQuery中:
window.onload = function() {
document.getElementById(someId);
}