Schauen wir uns zunächst ein Beispiel an:
document.forms[0] Wenn die HTML-Seite ein oder mehrere Formularformulare enthält, wird ein Formulararray vom Typ NodeList zurückgegeben
document.forms[0].usernames, wobei Benutzernamen der Wert von id oder der Wert von name sein können, diese beiden Attribute sind hier äquivalent. Darüber hinaus wird nicht unterschieden, ob es sich bei der Komponente um ein Textfeld, ein Optionsfeld oder ein Kontrollkästchen handelt.
Zu diesem Zeitpunkt müssen zwei Situationen unterschieden werden ,
Wenn es eine Eingabe gibt, deren ID oder Name „Benutzernamen“ ist, gibt document.forms[0].usernames die spezifische Eingabekomponente zurück. Wenn Sie sie zu diesem Zeitpunkt bedienen, müssen Sie sie gemäß der spezifischen Komponentenoperationsmethode verwenden .
Zu diesem Zeitpunkt gibt Alert(document.forms[0].usernames.length) undefiniert zurück, da die Eingabekomponente nicht über das Längenattribut verfügt.
Wenn es zwei oder mehr Eingaben gibt, deren IDs oder Namen „Benutzernamen“ sind, gibt document.forms[0].usernames zu diesem Zeitpunkt ein NodeList-Array zurück
Alert(document.forms[0].usernames.length) gibt die Länge des Arrays zurück. Im obigen Beispiel ist der Rückgabewert 3
Daher müssen Sie bei der Verwendung von js zur Auswahl aller Elemente berücksichtigen, ob ein oder mehrere Kontrollkästchen mit demselben Namen
vorhanden sind
Wenn eine Komponente mit dem Namen „Benutzernamen“ oder mehrere Komponenten mit dem Namen „Benutzernamen“ vorhanden sind, gibt document.getElementsByName() ein HTMLCollection-Array zurück. Beachten Sie den Unterschied zu document.getElementsByTagName(), das ein Array basierend auf der Tag-Kategorie erhält.
var name = document.getElementsByTagName("usernames"), warning(names[0]) Das hier zurückgegebene Ergebnis ist undefiniert. Ich habe ursprünglich byName mit byTagName verwechselt und kein Tag beginnt mit usernames,
GetElementsByTagName gibt jedoch weiterhin eine Array-Sammlung zurück, die keinen Inhalt enthält. Der Name [0] existiert nicht, daher wird undefiniert zurückgegeben, da alle undefinierten Werte angezeigt werden, wenn sie den Bereich des Arrays überschreiten.
var test = {'0','1','2',};alert(test[3]); gibt undefiniert zurück.