5
1

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.

javascriptのonclickメソッドでうまく発火しなかった

Last updated at Posted at 2020-05-29

javascriptのonclickメソッドで少し詰まったところがあるので、自分のメモとして残しておきます。

問題

javascriptでonclickメソッドを使おうとした際に、idではうまく発火するがclassだとうまく発火されなかった:frowning2:

idでonclickメソッドを発火させる場合

document.getElementById('hoge').onclick = function() {
  console.log("クリック")
}

これは普通にIDの要素がクリックされたら発火します。

classでonclickを発火させる場合(失敗)

document.getElementsByClassName('fuga').onclick = function() {
  console.log("クリック")
}

これでは発火されず、コンソール上にも何も表示されません。
classはidと違い一意でなく1ページ上に同じ名前のものを複数設定できるため、getElementsByClassNameHTMLCollection(配列型のオブジェクト)となって返ってきてしまうのです。
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementsByClassName

解決策

classでonclickを発火させる場合(成功)

document.getElementsByClassName('fuga')[0].onclick = function() {
  console.log("クリック")
}

そのため、getElementsByClassName('fuga')[0]とするように添字を設定する必要があります。

まとめ

そもそもgetElementByIdではElementで単数形になっていて、getElementsByClassNameではElementsで複数形となっているのでよくみれば当たり前でしたね。

わざわざ記事にするほどの内容でもないですが、自分の備忘録として残しておきました。

5
1
2

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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?