JavaScript DOM操作時に使う判定アレコレ

素のJavaScriptでDOM操作する際、何を参照しているか、の判定で使えそうな情報をまとめました。

Object.prototype.toString.call(elements);

オブジェクトのクラス名(型)を取得するメソッド toString を call を使って呼び出します。

DOM取得の書き方 → toStringした結果
element.getElementsByClassName()
element.getElementsByTagName()
 [object HTMLCollection] 要素ノードのコレクション
document.forms
document.images
document.links
document.anchors
他、embeds, plugins, scripts など
→ [object HTMLCollection] 要素ノードのコレクションanchors は <a name=” “>~</a> で、aタグのリンクは links の方に格納されます。
(aタグのリンクは HTMLAnchorElement という名前なので少し混乱します。)
element.children → [object HTMLCollection] 要素ノードのコレクション
document.getElementById() → [object HTML【TagName】Element] 要素ノードそのもの
element.querySelector() → [object HTML【TagName】Element] 要素ノードそのもの
element.querySelectorAll() → [object NodeList] すべての種類のノードのコレクション … ということになるが、cssセレクタで検索しているので、実質、要素ノードのみのコレクションか。
element.childNodes → [object NodeList] すべての種類のノードのコレクションelement.childNodes で取得したものを for文で回して確認すると、テキストノード
→ [object Text]要素ノード(エレメントノード)
→ [object HTML【TagName】Element]

【TagName】

タグ名が入ります。
1文字目が大文字のものが入ることが多いようですが、いろんなパターンがありますね。

p [object HTMLParagraphElement]
a [object HTMLAnchorElement]
br [object HTMLBRElement]
i, b, em [object HTMLElement]

element.nodeType

主に使う値は以下でしょうか。

意味
1 要素ノード(エレメントノード)
3 テキストノード
※ element.children ではひっかからない。 element.childNodes で。
8 コメントノード
※ element.children ではひっかからない。 element.childNodes で。
10 文書型宣言
document でとるとこれ。 <!DOCTYPE html> のことですね。
[object HTMLCollection] や [object NodeList] の nodeType は undefined です。

element.nodeName

要素ノードは【TagName】と同じようです。
テキストノードは #text 、コメントノードは #comment、文書型宣言は html でした。
nodeTypeの番号で判別すればいいような気がしました。