我想简单地将textNode附加到<h1>
,然后将其附加到正文<div id="prob3">
,但我在TypeError: bdy.appendChild is not a function
上收到此错误bdy.appendChild(header);
。这段代码出了什么问题?
JavaScript代码(嵌入在head标记中):
function init()
{
var bdy = document.getElementsByTagName("body");
var header = document.createElement("h1");
var txt = document.createTextNode("Hello World!");
header.appendChild(txt);
bdy.appendChild(header);
}
HTML:
<body onload="init();">
<div id="prob3">
<!--Created TextNode goes Here-->
</div>
</body>
答案 0 :(得分:3)
你可以使用:
document.body.appendChild(header);
您的代码无效,因为:
var bdy = document.getElementsByTagName("body");
检索元素列表,而不是单个元素。您可以使用:
var bdy = document.getElementsByTagName("body")[0];
从列表中获取第一个元素,但是这样做是没有意义的,因为document.body
已经预定义了。
答案 1 :(得分:2)
getElementsByTagName
为你提供一个NodeList,你不能追加到那个 - 你必须首先得到该列表的第一个元素,getElementsByTagName("body")[0].appendChild
。
但是每个浏览器都将document.body
理解为body元素的快捷方式。
答案 2 :(得分:2)
在此方法中调用:
var bdy = document.getElementsByTagName("body");
注意“元素”是复数。这意味着它很可能返回类似数组的结构(在本例中为NodeList)。数组自然没有.appendChild
方法。您可以通过在调试器中检查bdy
来解决此问题,或者通过console.log
更直接地检查它。