Hallo Chris,
Stößt die Funktion z.B. auf ein 'select' oder 'radiobutton', dann ist .length gesetzt [...]
Woher hast du das? Bei select und radiobuttons gibt's AFAIK keine Eigenschaft "length". Nur eine Eigenschaft "options", die wiederum eine Eigenschaft "length" hat, weil es ein Array ist.
Was für deine Zwecke vielleicht sinnvoller wäre, ist die Eigenschaft "type" von "elements". Damit kannst du abfragen, was für einen Typ von Formularfeld du gerade vor dir hast:
if (document.formular.elements[0].type == "select" || document.formular.elements[0].type == "radio")
for (i=0; i<document.formular.elements[0].options.length; i++)
alert(document.formular.elements[0].options[i].value);
Oder du fragst ab, ob die "options"-Eigenschaft existiert:
if (document.formular.elements[0].options)
...
Ist aber IMHO unsicherer.
Du könntest natürlich auch document.formular['Text2'].length bzw. document.formular['select'].length schreiben, was keinen Unterschied macht.
Ja, weil es AFAIK bei beiden die Eigenschaft "length" nicht gibt. Schau mal unter http://selfhtml.teamone.de/javascript/objekte/elements.htm. Dort findest du keine length-Eigenschaft. Das muss zwar noch nicht heißen, dass es keine Browser gibt, die selbst eine length-Eigenschaft einführen. Aber es zeigt, dass diese Eigneschaft wohl nicht zu den "normalen" Eigenschaften zählt, die man in den meisten Systemen erwarten darf. Und ein Formularelement ist kein Array, hat also nicht "von Haus aus" eine length-Eigenschaft. (Ja, ich weiß, es ist ein assoziatives Array, weil das jedes Objekt ist. Ist mir jetzt aber egal ;-)
Viel Erfolg,
Robert
What I "discovered" was that happiness is not something that happens. [...] Happiness, in fact, is a condition that must be prepared for, cultivated, and defended privately by each person.
-- Mihaly Csikszentmihalyi