SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

HTML5ではフォームのコントロールの名前を変えても以前の名前で参照できるのが正しい

問題のデモ

IEでは動かないと思います。

↓あるinput要素

↓ボタンクリック:
alert(document.forms[‘f20120608’][‘i20120608’].value);
document.forms[‘f20120608’][‘i20120608’].setAttribute(‘name’, ‘i20120608_2’);

↓ボタンクリック:
alert(document.forms[‘f20120608’][‘i20120608_2’].value);

↓ボタンクリック:
alert(document.forms[‘f20120608’][‘i20120608’].value);

理由

IE以外は以下のHTML5の仕様に従っているようです。

フォームの要素に名前でアクセスするとき(例:document.forms[“hoge”][“fuga”] )、その名前で一度アクセスすると、その名前はその要素を参照するために利用し続けることができる。たとえその要素の名前を変更したとしても。

form[name]

form(name)

Returns the form control (or, if there are several, a NodeList of the form controls) in the form with the given ID or name (excluding image buttons for historical reasons); or, if there are none, returns the img element with the given ID.

Once an element has been referenced using a particular name, that name will continue being available as a way to reference that element in this method, even if the element’s actual ID or name changes, for as long as the element remains in the Document.

If there are multiple matching items, then a NodeList object containing all those elements is returned.

http://www.w3.org/TR/html5/the-form-element.html#the-form-element

関連するメモ

コメント