不能在全局范围内使用document.getElementById()

时间:2013-04-14 18:50:47

标签: javascript getelementbyid

当我在全球范围内尝试这个时:

document.getElementById("p1").innerHTML ="Howdy mate";

它不起作用,firebug报告错误:

TypeError: document.getElementById is null

但是当在函数内部时,相同的指令运行良好:

function sayHello(){
    document.getElementById("p1").innerHTML ="Howdy mate";
}

我还没有找到任何解释这种行为的文献。有人可以帮忙吗?

编辑:@All,正确的错误消息是

document.getElementById("p1") is null 不是

Window.getElementById("p1") is not a function

如前所述。我纠正了。

2 个答案:

答案 0 :(得分:3)

可能是你在呼叫document.getElementById("p1").innerHTML ="Howdy mate"; 在加载元素之前?

http://jsbin.com/abejiz/1/edit vs http://jsbin.com/abejiz/2/edit

答案 1 :(得分:0)

@All,我按照@ user2264587的回答修改了我的代码。问题是,我的javascript代码已加载到文档的<head>标记,而<p>元素id="p1"位于<body>。因此javascript指令实际上是在加载<p>元素之前执行的。我现在已将代码放在<body>内和<p>之后:

<body>
...
<p id="p1"><p>
<script>
        document.getElementById("p1").innerHTML ="Howdy mate";
</script>

</body>

工作正常。