getElementsByTagName [JavaScript]
◆document.getElementsByTagName メソッド
collection = document.getElementsByTagName(tagname);
nodelist = document.getElementsByTagName(tagname);
指定された DOM(Document Object Model) 形式のドキュメント document から、tagName プロパティが引数(文字列)tagname であるエレメントに対する、Element クラス(またはそのサブクラス)のコレクション collection、またはノードリスト nodelist を返します。
タグ名ですから、getElementsByTagName('a'); とか、getElementsByTagName('body'); なんてこともできちゃいます。
該当するインスタンスが存在しない場合、null ではなく、空のコレクション collection、または空のノードリスト nodelist を返します。
HTML では、ボタンやテキストボックスといったコントロールは、その種類のエレメントごとに「HTML タグ」が決められており、同一のタグを持つコントロールは、ひとつの document 内に複数存在する可能性があります。
従って、document.getElementsByTagName(tagname) メソッドは、指定されたタグ名のコントロール群を、一度に返せるような戻り値を返します。
だから、ユニークな id プロパティでエレメントを探すメソッドが getElementById(単数形)なのに対して、tagName プロパティで探すこのメソッドの名前は getElementsByTagName(複数形)なんですね。
こいつは Ajax などで、かなりいい加減にサーバーから送信した XML でも、XMLHttpObject オブジェクト インスタンスの responseXML プロパティで受け取った DOM オブジェエクトを、きちんとフィールドごとの Element としてピックアップしてくれるので、かなり重宝します。
問題の戻り値のインスタンスなんですが、ブラウザ依存です(また出たよ・・・・・・)。
Internet Explorer 8、Firefox 3.6.13 では、戻り値が HTMLCollection というオブジェクト インスタンスで返ってきます。
一方、Opera 11.00、Safari 5.0.3、Google Chrome 8.0.552.224 では、戻り値が NodeList というオブジェクト インスタンスで返ってきます。
HTMLCollection も NodeList もいずれエントリーにしますが、あんまり便利な代物じゃありません。