为什么我不能用javascript写这个div?

时间:2015-03-29 14:09:36

标签: javascript html

我已经尝试了几种写入这个div的方法,但要知道:

&#39>测试'有效,但没有别的:

document.write("testing");
document.getElementById('menu2').innerHTML += "<br>Some new content!";
var node = document.getElementById("menu2");
node.innerHTML = "<p>" + "Hello" + "</p>";
(function printMsg() {
    var node = document.getElementById("menu2");
    node.innerHTML = "<p>" + "Hello World!" + "</p>";
})();

并在html中

<div id="menu2">x</div>

x表示

在撰写本文时,这是http://www.jchess.nyc(索引页)

2 个答案:

答案 0 :(得分:2)

这是因为document.write只是在正文中写下你指定的文字;加载任何元素都不需要document.write,但document.getElementById()搜索DOM中的元素,当您开始执行脚本时,不会立即创建该元素,所以你的脚本在加载之前试图用id menu2访问你的元素。

为了能够使用document.getElementById(),您应该等待DOM加载,方法是将所有访问DOM的方法放到:

window.onload=function(){

}

答案 1 :(得分:2)

你的问题是你把脚本放在正文的开头,所以它在div#menu2在DOM中可用之前执行。

最简单的解决方法是在关闭script代码之前移动</body>代码。同时删除document.write,这不是问题,但你不需要它。

<script>
document.getElementById('menu2').innerHTML += "<br>Some new content!";

var node = document.getElementById("menu2");
node.innerHTML = "<p>" + "Hello" + "</p>";

(function printMsg() {
    var node = document.getElementById("menu2");
    node.innerHTML = "<p>" + "Hello World!" + "</p>";
})();
</script>

</body>