プロが教えるわが家の防犯対策術!

IEで悩まされています。
配列arrで指定されている属性情報をノードにセットする際に、以下のようにしたところ、
IE8では設定されたelement.attributesはarrとは異なる順番となってしまいます。
(FF10ではsetAttributeしたとおりの順番でelement.attributesに格納されます)

for ( var i = 0; i < arr.length; i++){
element.setAttribute( arr[i].name, arr[i].value);
}

配列arrで指定されている順番そのままでelementに属性を設定したいのですが、
どうすれば可能でしょうか。

A 回答 (1件)

「仕様上」不可能です。

なぜなら、XML および HTML の基本仕様として、属性は順序を持たないからです。IE の振る舞いは正当です。

順序が必要なら要素として書き直すか、やり方を変えて下さい。


ついでながら、JavaScript における for...in でのプロパティ列挙も順序は実装依存です。プロパティは順序を持ちません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!