Internet Explorer 6 および 7 で class 属性を取得する方法

追記

この記事よりも良い方法を下記の記事に書きました。 下記記事を参照してください。

本文

Internet Explorer 6 (IE6) および 7 (IE7) で、(X)HTML 文書中の要素の class 属性の値を JavaScript を使って取得しようとしてなかなか上手く行かなかったのでメモ。

普通、class 属性の値を取得するためには、例えば変数 elem に Element オブジェクトが入っているとして

classValue = elem.getAttribute("class");
という風に Element.getAttribute メソッド を使用します。 当然 Firefox 3.5 や IE8 などでは上手く動きました。 が、何故か IE6 と IE7 では上手く属性値がとれませんでした。 IE6 や IE7 の場合はどうすればいいかは IEでclassの値を取得する場合の注意 - JavaScript に書いてありました。

<a class="foo" href="#">bar</a> なエレメントにおいて class の値を取得するには、通常 obj.getAttribute('class') でいいのですが、IE は属性値を className にしないととれません

というわけで、IE6, 7 でもちゃんと class 属性の値をとるためには以下のようにします。

classValue = elem.getAttribute("class") || elem.getAttribute("className");

参照先では "className" がダブルクオーテーション (") でくくられていませんが、実際には必要ですのでご注意ください。