9


0

http://reference.sitepoint.com/javascript/Element/setAttribute[SitePoint](および私の実験)によると、 "setAttribute()"のIE実装はバグが多く信頼性がありません。
http://reference.sitepoint.com/javascript/Attr/name[SitePoint]にもよると、 `name`属性は読み取り専用です。

要素に `name`属性を設定できる別の方法はありますか? ラジオボタンで使うのにこれが必要です。 私は現在ライブラリを使用していないので、可能であれば、私はjQueryのない解決策を望みます。

前もって感謝します!

6 Answer


12


これは私のために働いた

alert(document.getElementById( 'testInput')。name); document.getElementById( 'testInput')。name = 'someName'; alert(document.getElementById( 'testInput')。name);

あり



4


Sitepoint [line-through] * lies *は「name」の異なる用法について話しています(Anthonyのコメントを参照)。 これは読み取り専用ではありません。フォームフィールドに 'name’を設定することは部分的にしか効果がないという長年にわたるIEのバグ(v7まで)だけです。 特にラジオボタンは正しく受け付けません。

マイクロソフトが承認した解決策、http://www.thunderguy.com/semicolon/2005/05/23/setting-the-name-attribute-in-internet-explorer/ [ここに詳述]はIEのバージョンのcreateElementは、同時に属性を設定するために呼び出します。

var radio = document.createElement( '');

おそらくもっと良い方法は、単に古き良きinnerHTMLを使うことでしょう。

var div = document.createElement( 'div'); div.innerHTML = ''; var radio = div.firstChild;


1


単純に新しい名前をelements * name *プロパティに割り当ててみましたか? 私はクロスブラウザがどのように機能するのかわからないが、DOMレベル1をサポートしているものなら何でも動くはずだ。

なぜsetAttributeを使ってこれを実行するのかわからないのですが。


0


nameプロパティは入力要素に対してのみ読み込まれるわけではありません。

http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-6043025[the the spec]を参照してください。


0


http://www.quirksmode.org/dom/w3c_core.html[W3C DOM Compatibility  -  Core]を見ると、setAttribute()の代わりにsetAttributeNode()を使用することができます。 IE 6以降で動作するかもしれません。


0


IE DOMでは、実行時に名前属性を変更することはできません。 ただし、name属性を更新するためにjQueryを使用することはIE上で機能します。 私はIE9でテストしました。 たとえば、

$( "#ID0E2B")。attr( "name"、newName);