11 of 17 menu

JavaScriptにおけるリンク遷移エラー

予期しないリンク遷移に関連するエラーについて 詳しく見ていきましょう。 例として、以下のようなリンクが 与えられているとします:

<a href="">link</a>

リンクを変数に取得しましょう:

let link = document.querySelector('a');

このリンクにクリックイベントハンドラを バインドします:

link.addEventListener('click', function() { console.log(this.textContent); });

ここで予期しない事態が起こります。コードは 正しく書かれていますが、コンソールに出力が 現れません。 その理由は、クリック時にリンクへの遷移が 発生するためです。属性 href に何も 指定されていないため、リンクは単に 現在のページを指しています。

つまり、リンクをクリックすると ページがリロードされます。データは コンソールに出力されますが、その後ページが 再読み込みされ、コンソールが空になります。

注意深く観察すると、クリックの瞬間に データが一瞬コンソールに表示され、 その後消えるのが分かります。これが このエラーの特徴的な兆候です。

この問題を解決する方法を 見ていきましょう。

解決策 1

リンクの href にハッシュ記号(#)を 設定します。これにより、リンクは現在の ページ内の特定の場所を指し示し、 リンクをクリックしてもリロードは 発生しません。 実装してみましょう:

<a href="#">link</a>

解決策 2

より高度な方法は、 preventDefault メソッドを使用して デフォルトの動作をキャンセルすることです:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });
日本語
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
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否