« Safari for Windows 3.0.4 | Main | Happy〓X'mas »

28 November 2007

label要素のfor属性をgetAttributeで取るときの注意

こんにちは。久々にブラウザの違いによる問題に遭遇したのでシェアしておきたいと思います。

label要素のfor属性を抜き出す処理は以下のようにすればFirefoxで取得することができます。

var labels = document.getElementsByTagName("label");
for (var i = 0; i < labels.length; i++) {
var attr = labels[i].getAttribute("for");
alert(attr);
}

でもInternet Explorer、通称IEでは変数attrはnullになります。

なぁにぃ~

で、調べたところ、グッドな記事を発見しました。

Web Bug Track: bug 217 - getAttribute doesn't always work in IE

getAttributeにはバグがあるようなので、DOMの値を直接参照しちゃおうという展開です。

var labels = document.getElementsByTagName("label");
for (var i = 0; i < labels.length; i++) {
var attr = labels[i].attributes['for'].nodeValue;
alert(attr);
}

はい。これなら大丈夫。IEでもFxでもちゃんと値が取れました。

うひー。DOMについてブラウザ間の実装差がなくなる世の中になってもらいたいものですね。

追記 14:48
Fxでは labels[i].attributes['for'].nodeValue が動かなかったす。Fxでは getAttribute('for')が動くのでそっちをみてください。

TrackBack

TrackBack URL for this entry:
http://bb.lekumo.jp/t/trackback/517129/31023177

Listed below are links to weblogs that reference label要素のfor属性をgetAttributeで取るときの注意:

Comments

Post a comment

Access Ranking

Powered by Six Apart
Sponsored links