駆け出しのエンジニア日記

プログラミング言語勉強中の奮闘日記

getElementsByTagName / getElementsByClassName

 getElementsByTagName メソッドは、要素のタグ名を指定して一致する要素をすべて取得します。

document.getElementsByTagName(tagname)

例えば、divタグ、段落要素のpタグや画像要素のimgタグなどの要素を全て取得できます。

実際に確認してみましょう。

ある架空のウェブサイトのpタグ要素を全て取得できます。

また配列ではないですがfor〜ofでループ処理ができ、画像要素も取得できます。

const allImages = document.getElementsByTagName('img');
for (let img of allImages) {
console.log(img.src)
}

 

一方で、getElementsByClassName メソッドは、要素の class 属性の値を指定して一致する要素をすべて取得します。

document.getElementsByClassName(classnames)

ある架空のウェブサイトのsquareクラスがあります。

上記のようにsquareクラスがついた要素を取得できます。

 

最後に存在しない値を入れた場合と、その時のgetElementByIdとの違いを見てみましょう。

getElementsByTagName /  getElementsByClassName は「空のHTMLCollection」 が返ってきます。

getElementByIdの時は「null」が返ってきます。この違いがあります。

getElementsByTagName /  getElementsByClassNameは用途によって使い分けが必要です。

 

ちなみに「HTMLCollection」の中身は「Element」という要素になります。

要素を表すオブジェクトです。

developer.mozilla.org