potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

JavaScript idの直打ちによる要素参照が避けられるのはブラウザ仕様差のせい

id="element1"な要素を参照する方法はいくつかありますが、次の2通りが素直です。

// Windowオブジェクトへの名前アクセス
element1
window["element1"]
// document.getElementByIdメソッド
document.getElementById("element1")

前者の方が短いのに後者のサンプルコードが多いことが気になって調べたら、前者には次の問題があるそうです。

  • IEはフォーム内のnameも使えてしまう。
  • WebkitGeckoはA要素のnameを使えない。
  • Geckoは同じidの要素が複数あっても最初の要素だけ返す。

ブラウザの独自仕様は予期せぬ動作を招くので、基本的にはそれらに影響されない前者を使うのが良さそうです。