使用`getElementsByTagName`获取单个元素

时间:2011-07-21 08:00:32

标签: javascript html dom getelementsbytagname

我知道如果我们想要找到一组元素,getElementsByTagName就是我们的方法,它返回一个NodeList。但如果我们正在寻找带有“body”的标签名称,那么为什么我们需要在(“body”)元素之后添加[0]? HTML文档中只有一个正文标记。

 var body = document.getElementsByTagName("body")[0];
 body.className = "unreadable";

为什么我们不能像这样

编写没有索引[0]的代码
 var body = document.getElementsByTagName("body");
 body.className = "unreadable";

如果我写这段代码,那么不可读的类将不会添加正文标记...为什么?

3 个答案:

答案 0 :(得分:9)

因为document.getElementsByTagName总是返回NodeList。如果您想要更轻松地检索正文,可以只使用document.body

答案 1 :(得分:3)

getElementsByTagName返回NodeList。它可能没有任何物品。它可能有一个。它可能有很多。您可以通过测试其.length来查看其中有多少。

如果它有时会返回一个NodeList并且有时会返回一个ElementNode,那将会很混乱。

答案 2 :(得分:2)

getElementsByTagName [docs] 始终会返回NodeList。具有特定标记的元素是否只存在一次并不重要。

如果函数表现不一致会很糟糕。