IEのsetAttributeではまる

隣の人が何やらはまっていたのでメモメモ。

その処理はテーブルのカラムをJavaScriptで動的に生成するというものだったのだが、生成したカラムのrowspanがIEでは効かないという問題が発生(IE7で確認)。


カラムの生成はinnerHTMLではなく、DOMでcreateしてはappendしてという処理。
appendChild()の順番を変えてみるとか色々したがどれもだめで、innerHTMLによる書き換えでは問題はなかった。


IEのバグなのかと思って色々ぐぐってみると次のページを発見した。

デフォルトで getAttribute は大文字小文字を区別せずプロパティ名を検索しますが、setAttribute は大文字小文字を区別します。この動作は IE 独自の引数 iFlags を設定することで変更可能です。(0: 大文字小文字を区別しない、1: 大文字小文字を区別する)


ということで、

col.setAttribute('rowSpan', 2);

と指定してやったら思い通りに表示された!
他にも特殊な名前のやつがいっぱいあるみたいだし、これは意外と厄介だなぁ。
ちなみにFirefoxではどちらでも問題なかった。