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.).
Das habe ich falsch benannt bzw. falsch gedacht. Es ist eine nodeList
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!
jop.
Die Logik, dass elements.name eine Collection (im Sinne von HTMLCollection gemäß DOM HTML) zurückgibt, ist also nicht definiert.
Im Prinzip ja, wobei eine HTMLCollection eine List of Nodes ist.
Kleiner Test:
document.forms.namedItem("Formular").elements.namedItem("Favoriten") → [object HTMLInputElement]
document.forms.Formular.elements.Favoriten → [object NodeList]
Ich hatte das auch erst später getestet.
Aber wo sonst ist dieses Verhalten definiert? Ich denke, das ist ein Erbe aus Netscape Client JavaScript:
Die Frage hab ich mir noch nicht gestellt, dafür bist du zuständig ;-)
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().
Aber noch nicht warum dieses Verhalten auf alle Elemente angewandt wird.
Struppi.