JavaScriptの動かないコード (JavaScriptエラー集)
「このJavaScriptコードが動かないのは,なぜですか?」というミニクイズ集。
すべて制限時間は1分。
別名,JavaScriptのエラー事典。またはアンチパターンのまとめ。
2015年5月現在,全53記事。
中級編
JavaScriptの仕様関連
- p要素への appendChild() で失敗する
- かけ算を間違える
- イベントハンドラが見る値のエラー
- クロージャを使わない場合に起きるエラー
- オブジェクトのprototypeを変更した時のエラー
- 正規表現で同じ文字の連続を検出したい - 置換前パターン中での後方参照
- jsonオブジェクトをevalできないエラー
- 不要なイベントが連鎖で発生してしまう (バブリングの対処)
- オブジェクトのプロパティ定義にthisを使って失敗するエラー
- setTimeoutのタイマーが指定時刻に動かないエラー
- オブジェクトのメソッドを変数代入でコピーできない
- innerHTMLを追記するとイベントハンドラが消える
- nullが0以上0以下と認識されてしまう
- 文字数のカウントに失敗する
- callで,コンテキスト引数にnull・undefinedや,falseなどプリミティブ型の値を渡した時のthisの挙動
- 大きな数字を表示できないエラー (2の53乗を超えると,IEEE754の精度保証外なので計算もalertも不可能)
- 配列のsort結果がおかしい …評価関数が正数か負数以外の値を返す場合の挙動のエラー
- forループ内でイベントリスナを定義したら,動作がおかしい。(クロージャや関数オブジェクトの性質を理解していないために発生するエラー)
- 正規表現の括弧キャプチャを,グローバルで繰り返しmatchできない (gオプションを付けると部分文字列の抽出が無効)
- 正規表現をwhile内で定義すると無限ループで固まるエラー (execでグローバルなマッチだと,処理がフリーズ)
各ブラウザの仕様やクロスブラウザ関連
- "インターネットサイト を開けません。操作は中断されました。"
- Ajax読み込み時に「80020101」のエラー
- テーブルに行追加できない
- selectの中味を書き換えるときのエラー
- evalでfunctionを作る時のエラー
- scriptタグの中味を動的に書き換えた時のエラー
- splitで文字列を分割する時のエラー
- cloneNodeで選択状態が変わるエラー
- innerHTMLに閉じタグを書き込む時のエラー
- Ajax読み込み時に「システムエラー -1072896658」
- 動的追加したイベントの実行順序 ( addEventListener vs attachEvent )
- イベントハンドラに同じ関数を2回以上追加したい
- DOMで子要素を指定する際のエラー
- onKeydownイベントが認識されない
- イベントの詳細情報を第一引数で取得できない
- iframe内にDOMアクセスできないエラー
- iframe内のDOM要素を別フレームにコピーできないエラー
- IEでスコープチェインにdocumentが補完されるように見える不思議
- clickイベントを強制的に発生させたい (fireEvent/createEventの使い方)
- イベント強制発生までの遅延時間をなくしたい
- ラジオボタンとプルダウンのonchangeイベントがおかしい
- 重いページで,onloadのイベントリスナが実行されない
- Aタグがリンクとして機能しないエラー (URL・hrefの%エンコードがRFC違反だと,IEで例外が発生)
初級編
文法関連
- カウンターのエラー
- DOMアクセスできない
- if文の分岐がおかしい
- 関数に配列を渡すときのエラー
- 配列とオブジェクトの宣言エラー
- with文にまつわるエラー
- 関数が返り値を return できないエラー (セミコロンの罠)
- DOM要素の配列を,forループで順番に全削除できない
- varで変数宣言する位置が,関数内の先頭以外だと起こる「変数の巻上げ(ホイスティング)」
- textareaの内容を読み書きする方法は,innerHTMLとvalueのどちらか?
関数関連