0

HTML 文件...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="src/myJS.js"></script>
</head>
<body onload="myJS.myFunction();">
<p id="p01"></p>
</body>
</html>

外部 Javascript 文件(为方便起见称为 myJS.js)...

myJS = {
    myFunction: function()
    {
        //This works
        document.write("Hello world. ");

        //This does not work
        document.getElementById("p01").appendChild(document.createTextNode("Hello world, again"));
    }
};

我最好的猜测是节点在执行p01时尚未创建myJS,但我认为这onload会做正确的事情。

4

2 回答 2

3

如果您的外部 js 确实包含您发布的两行代码,则问题在于document.write覆盖整个 HTML(一旦加载 DOM,它的行为就像那样)。然后getElementById找不到任何#p01,因为它不再存在。

如果您只是删除document.write调用,您的代码应该可以工作(请参阅一个实时示例)。

于 2013-01-04T12:53:32.730 回答
2

因为p01尚未添加到 DOM。

试试这样:

<body>
<p id="p01"></p>
<script type="text/javascript">
window.onload = myJS.myFunction;
</script>
</body>
于 2013-01-04T12:47:18.637 回答