10
6

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 5 years have passed since last update.

addEventListenerでnullチェックが面倒くさいとき

Posted at

例えば、ある要素をクリックした時の動作を定義する際、大雑把にこんな感じになる。

const el = document.getElementById('checkbox');
el.addEventListener('click', e => {
  // 省略
  e.preventDefault();
});

だが[id=checkbox]が存在しない場合、getElementByIdnullを返す。
なのでDOM要素が存在しているかを判別する必要が出てくる。

const el = document.getElementById('checkbox');
if(el != null) {
  el.addEventListener('click', e => {
    // 省略
    e.preventDefault();
  });
}

これはダサい。
ので、該当のDOM要素が存在しなかったらDOMを変数に入れてしまえばいい。

const el = document.getElementById('checkbox') || document.createElement('input');
el.addEventListener('click', e => {
  // 省略
  e.preventDefault();
});

createElementしたDOMはHTML上には存在しないので、遠慮なしにaddEventListerでリスナー待ちになる。
ただし問題はあまりにやりすぎるとメモリを喰らっていくので、本来はちゃんとnullチェックした方がいい。

10
6
3

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
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?