0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

getElementByIdとgetElementByClassNameの違い

Posted at
const aaa = document.getElementsByClassName("aaa");
console.log(aaa);
//
const bbb = document.getElementById("bbb");
console.log(bbb);

上記は同じように見える少なくともjQueryで書くと多分こう

const aaa = $(".aaa");
console.log(aaa);
const bbb = $("#bbb");
console.log(bbb);

aaaもbbbもオブジェクトを返してくれる。

しかしプレーンのjavascriptはそうはいかない。

getElementByIdはオブジェクトを返してくれる(jQueryのように)が
getElementsByClassNameはHTMLCollection(配列っぽいもの)を返す。

const aaa = document.getElementsByClassName("aaa");
console.log(aaa);

HTMLCollection { 0: p.aaa, length: 1 }
const bbb = document.getElementById("bbb");
console.log(bbb);

<p id="bbb">

これの何が重要か

getElementByIdはオブジェクトを返してくれる(jQueryのように)が
getElementsByClassNameはHTMLCollection(配列っぽいもの)を返す。

と書いたが、これのせいでgetElementByClassNameでは「addEventListener」などの指定ができない。
配列のようになっているので

const aaa = document.getElementsByClassName("aaa")[0];

<p class="aaa">

としなければ動かない。

対処法

(まず皆がどうやっているのかを知りたいが。。。)

全てをIDにするのは無理なので、「querySelector」を使うと良いかもしれない。

const ccc = document.querySelector('.ccc');
console.log(ccc);

<p class="ccc">

querySelectorの参考URL

まとめ

プレーンのJavaScriptを勉強しているがわからないことが山ほど出てきてjQueryに依存しすぎていた感が否めない。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?