Wenn Sie ein Formularelement innerhalb eines Formulars haben und dieses Element eine name
o id
können Sie direkt über das DOM-Element des Formulars als Eigenschaft mit diesem Namen darauf zugreifen. Dieses Verhalten scheint sehr breit abgestützt zu sein. Wird es von irgendeiner Spezifikation abgedeckt, und wenn ja, von welcher?
Dieses Verhalten für ein Formular elements
Sammlung angegeben ist in der DOM2-HTML-Spezifikation, aber ich sehe nicht sofort, dass die Elemente als Eigenschaften des Formulars selbst irgendwo angegeben werden, es sei denn, der Satz "Es bietet direkten Zugriff auf die enthaltenen Formularsteuerelemente sowie auf die Attribute des Formularelements." aquí gemeint ist (wenn ja, wow, ist das subtil, ich lese es als Hinweis auf die elements
Sammlung). Ich vermute, dass dies nur ein altes Verhalten ist.
Zur Klarstellung: Ich frage nicht, wie man am besten auf Formularfelder zugreift, sondern ob dieses Verhalten durch einen Standard abgedeckt ist. (Ich vermeide auch die ganze Sache mit den Dingen, die auf dem window
Objekt; das ist ein ganz anderes Thema).
Beispiel ( Live-Kopie ):
HTML:
<form id="theForm">
<input type="text" name="field1" value="foo">
<input type="text" id="field2" value="bar">
</form>
JavaScript:
var f = document.getElementById("theForm");
console.log(f.elements.field1.value); // "foo", per spec
console.log(f.field1.value); // also "foo"
console.log(f.elements.field2.value); // "bar", per spec
console.log(f.field2.value); // also "bar"
Ich habe IE6, 7, 8 und 9, Firefox 4.0, Firefox 3.6, Chrome 12, Opera 11 und Safari 5 überprüft, und alle tun es (machen die Formularfelder an beiden Stellen verfügbar).