Hallo,
eine Collection, diese wird erst gebildet, wenn es mehrere Elemente mit gleichen Namen in einem Formular gibt.
Wo soll das definiert sein?
Naja, anders gefragt, weil ich »Collection« als eine Fachbegriff aus DOM (HTML) verstehe:
elements ist eine Collection mit allen Elementknoten der Felder des jeweiligen Formulars (input, textarea, select usw.).
Wenn ich elements.name schreibe, ist das gemäß DOM HTML elements.namedItem("name"), gibt mir also zunächst einmal einen Elementknoten mit der ID bzw. dem ersten Knoten mit dem name-Attributwert »name«. Keine weitere Collection!
Die Logik, dass elements.name eine Collection (im Sinne von HTMLCollection gemäß DOM HTML) zurückgibt, ist also nicht definiert.
Kleiner Test:
document.forms.namedItem("Formular").elements.namedItem("Favoriten") → [object HTMLInputElement]
document.forms.Formular.elements.Favoriten → [object NodeList]
Das müsste gemäß DOM 2 HTML identisch sein.
Aber wo sonst ist dieses Verhalten definiert? Ich denke, das ist ein Erbe aus Netscape Client JavaScript:
http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.3/reference/radio.html#1193137
»All the radio buttons in a single group must have the same value for the NAME attribute. This allows them to be accessed as a single group. For a given form, the JavaScript runtime engine creates an individual Radio object for each radio button in that form. It puts in a single array all the Radio objects that have the same value for the NAME attribute. It puts that array in the elements array of the corresponding Form object.«
Da steht zwar nicht ausdrücklich, dass es bei einem Radiobutton keinen Array gibt, aber zumindest erklärt es den Unterschied bei namedItem().
Mathias