Nein, denn es ist kein Array sondern eine Collection, diese wird erst gebildet, wenn es mehrere Elemente mit gleichen Namen in einem Formular gibt.
Wie kommst du drauf, das es eine Collection ist? Ich hab noch nie ein objekt in einer collection einfach mit eckigen klammern angesprochen. dazu hab ich auch nirgends was gefunden. Haste n Link zur der entsprechenden Stelle in ner spezifikation oder so?
Nein. Ich hab ein paar Dokumente zu HTMLCollection gefunden
http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-75708506
http://forum.de.selfhtml.org/archiv/2003/12/t66415/#m379197
Aber nicht wo dieses Verhalten erklärt wird.
Aber du kannst es prüfen:
<input type="button" value="klick"
onclick="alert(this.form.test);">
<input type="text" name="test">
</form>
<form>
<input type="button" value="klick"
onclick="alert(this.form.test.item(0).value)">
<input type="text" name="test" value="test 1">
<input type="text" name="test" value="test 2">
</form>
aber davon abgesehen is es ja ziemlich egal ob collection oder array. Das seltsame ist ja, das sie erst gebildet wird, wenn es mehr als ein Element ist. Und dafür würde mich halt der Grund interessieren. wenn ich besispielsweise mit
document.forms[0].reset()
Du sprichst ja auch das nullte Element direkt an, wenn die Formulare alle den gleichen Namen haben kannst du diese nicht mit forms.name[] indizieren. Im gegensatz zu elements.
ein formular resette funktioniert das ja egal wie viele formulare in dem dokument enthalten sind. Hier braucht man scheinbar keine 2. Im Beispiel aus meiner Frage schon. Und genau der Grund dafür würde mich interessieren.
Der Grund wäre interessant bzw. die Frage wo das steht. Ich weiß es nicht.
Es ist aber insofern logisch, da dieses Verhalten nur elements zeigt (zumindest bei den Tests die ich gemacht habe), weil es ja durchaus mehrere elements mit gleichen Namen geben kann.
Struppi.