开发者问题收集

Javascript getElementById 空错误

2012-08-19
654

我最近发布了有关 Firefox 中的 javascript 问题的帖子,并指出问题很可能是 document.write() 以某种方式覆盖了脚本。 有人建议我使用 ID 来解决覆盖脚本的问题并避免信息堆叠

但是,在尝试将 ID 实现到我的 javascript 和 html 代码中时,我发现 firebug 报告:

"TypeError: document.getElementById("author_container") is null"

尽管事实是,再次,ID 已经在以下位置定义:

<p id="author_container"></p>

并且显然没有拼写错误, 并将脚本重新排列 到头部部分或对其进行更改以使 p 出现在脚本之前 完全没有区别 。 (请注意,尽管脚本先出现,但另一个示例仍运行良好)。

如果我使用预先存在的 ID 和 getElementById 示例并在 Firefox 中运行它,它会运行良好:

http://pastebin.com/FTEX1HGE

但如果我尝试运行我的代码,这似乎并没有太大的不同,我会遇到问题: http://pastebin.com/XfGUpZAS

我在这里遗漏了什么吗?我如何修改代码以使其在 Firefox 中工作?Firefox 会允许我正确运行我的代码吗?(下周找出答案?)

1个回答

将脚本放在页面底部,紧靠在结束 </body> 标记之前。换句话说,将脚本标记设为 document.body 的最后一个标记。这样,DOM 树在脚本开始之前就已完全加载。

除了许多问题之外,真正的问题是 GenerateCoord 函数中的 document.open 语句。这会 清除整个文档 ,之后 - 确实 - 任何 Id 都无法获取任何元素。下面是没有它的 jsfiddle

KooiInc
2012-08-19