⊗jsSpOtEH 280 of 294 menu

JavaScriptにおけるイベントハンドラの最適化

要素に設定された過剰な数のイベントハンドラは、 多くのメモリを消費し、ページの動作を遅くします。

例を見てみましょう。 あるリストがあるとします:

<ul></ul>

このリストへの参照を変数に取得します:

let ul = document.querySelector('ul');

次に、クリックイベントハンドラを設定しながら、 リストを li タグで埋めていきます:

for (let i = 1; i <= 1000; i++) { let li = document.createElement('li'); li.textContent = i; ul.append(li); li.addEventListener('click', function() { console.log(this.textContent); }); }

結果として、1000個のハンドラができてしまいます。 これは非常に多すぎます。 最適化するために、 イベントデリゲーションを 利用して、ul タグにハンドラを1つだけ設定することができます。

やってみましょう。まずはリスト項目を作成します:

for (let i = 1; i <= 1000; i++) { let li = document.createElement('li'); li.textContent = i; ul.append(li); }

そして、イベントのデリゲーションを実装します:

ul.addEventListener('click', function(event) { let li = event.target.closest('li'); if (li) { console.log(li.textContent); } });

100 × 100 サイズのHTMLテーブルを作成してください。 各セルがクリックされると赤色に変わるようにしてください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否