2009-03-28 15 views
0

バグがあり、提案された回避策はのJavaScriptのsetAttribute代替

elem.attr = 'val'; 

ですが、今は私のループの中でこれをどのように書くのか分かりません。

私はelem.styleとelem ['style']の両方を試しましたが、どれも動作しません。

は、誰も私にいくつかのアドバイス、事前に

おかげ

トン

答えて

5

使用elem[i]を与えることができます。

function createElement(strName, objAttributes) 
{ 
    var elem = document.createElement(strName); 

    for (var i in objAttributes) 
     elem[i] = objAttributes[i]; 

    return elem; 
} 
+0

... jQueryはクロスブラウザのナンセンスに対処しましょう。ありがとう! 今、私はスタイルのようないくつかのhtml属性を扱わなければなりません。 –

0

設定プロパティとsetAttributeを入れ替えることはできません。

setAttributeを使用する代わりに、要素のプロパティを設定する際には注意が必要です。 スタイルプロパティとイベントハンドラは注意深く記述する必要があり、html(disabled、multiple、readonly)で最小限に抑えられた属性はブラウザ固有の有効な値を持ちます。

また、element.class = "mynewclass"を設定すると、setAttributeの割り当てで文字列として使用することは完全に安全ですが、classは予約済みのjavascriptワードなので、エラーが発生します。プロパティ名は '.className'で、ラベルの 'for'属性の適切な名前は 'htmlFor'です。

1

はイエス、あなたが正しいです

$(elem).attr(i, objAttributes[i]);