2011-07-21 9 views
1

私は、要素のグループを見つけたい場合、getElementsByTagNameが私たちのメソッドであり、NodeListを返します。しかし、 "body"というタグ名を探しているのであれば、なぜ( "body")要素の後に[0]を追加する必要がありますか? HTML文書にはbodyタグが1つしかありません。私たちは、インデックスせずにこのコードを書い傾ける理由`getElementsByTagName`で単一の要素を取得する

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

[0]この

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

のような私はこのコードを記述する場合読めないクラスは、bodyタグに追加されることはありません...なぜ?

答えて

8

document.getElementsByTagNameが常にNodeListを返すためです。あなたが身体を検索する簡単な方法を見つけたい場合は、ただ使用することができますdocument.body

2

getElementsByTagName[docs]常には、NodeListを返します。特定のタグを持つ要素が1回だけ存在するかどうかは関係ありません。

関数が一貫して動作しないと悪いことになります。

+0

はい、それは本当です... –

3

getElementsByTagNameはNodeListを返します。それにはアイテムが含まれていない可能性があります。それは1つ持っているかもしれません。それはたくさんあるかもしれません。 .lengthをテストすると、その数がわかります。

NodeListを返すことがあり、時にはElementNodeを返すことがあると混乱します。

関連する問題