【javascript】getElementByIdとgetElementsByClassNameの違い

この記事について

環境javascript
目的getElementsByClassName で値が取れない理由を調べる
結果戻り値が HTMLCollection(集合)なので [0] などで要素を取り出す

つまずきポイント要約

  • getElementById は要素そのもの、getElementsByClassName は HTMLCollection を返す(sが付く=複数)

javascriptのgetElementByIdで値を取得したようにgetElementsByClassNameで値を取得しようとすると取得できなかった。getElementsByClassNameはたんにgetElementByIdのClass版ではなかった。

getElementByIdとgetElementsByClassNameでは戻り値が違う。

getElementByIdの戻り値

存在する場合は要素(オブジェクト)を返し、存在しない場合はnullを返す。

getElementsByClassNameの戻り値

存在する場合は1個以上のHTMLCollectionを返し、
 存在しない場合は0個のHTMLCollectionを返す。

getElementByIdがオブジェクトを返すのに対して、getElementsByClassNameは配列っぽいものを返す。複数返すからgetElementsByClassNameなのね。

//idにクリックイベントを設置

document.getElementById('content').click = function (e){
	alert("クリックされた");
}

//classにクリックイベントを設置

document.getElementsByClassName('box1')[0].onmouseup = function (e){
	alert("クリックされた");
}
タイトルとURLをコピーしました