如何正确创建textNode并附加到特定位置?

时间:2014-04-13 20:07:56

标签: javascript html function dom

我想简单地将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>

3 个答案:

答案 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更直接地检查它。