Schauen wir uns zunächst ein Beispiel an:
Die Codekopie lautet wie folgt:
<Formular name = "buyerForm" methode = "post" action = "/mySport/control/user/list.do">
<Eingabe type = "checkBox" id = "userernamen" value = "testtest"> testtest <br>
<Eingabe type = "checkBox" name = "userernamen" value = "testtest"> testtest <br>
<Eingabe type = "text" id = "userername" value = "testtest"> testtest <br>
</form>
document.forms [0] Wenn in der HTML -Seite ein Formular oder mehrere Formularformulare vorhanden sind, gibt es ein Formular Array von Nodelist -Typ zurück.
Document.Forms [0] .Unernamen, hier Benutzernamen können der Wert von ID oder Name sein, bei dem diese beiden Attribute gleichwertig sind. Darüber hinaus unterscheidet es nicht, ob eine Komponente ein Textfeld, ein Sachfeld oder ein Kontrollkästchen ist.
Zu diesem Zeitpunkt müssen wir zwischen zwei Situationen unterscheiden .
Wenn eine Eingabe -ID oder ein Name "Benutzernamen" ist, forms [0] .Derernamen gibt eine bestimmte Eingabekomponente zurück. Wenn es betrieben wird, muss es gemäß der spezifischen Komponentenbetriebsmethode verwendet werden.
Zu diesem Zeitpunkt gibt Alert (document.forms [0] .usernames.length) undefiniert zurück, da die Eingabekomponente nicht die Länge Eigenschaft hat.
Wenn es zwei oder mehr Eingabe -IDs oder "Benutzernamen" gibt, document.forms [0] .Unername gibt das Nodelist -Array zurück. Zu diesem Zeitpunkt,
alert (document.forms [0] .usernames.length) gibt die Länge des Arrays zurück. Im obigen Beispiel beträgt der Rückgabewert 3.
Wenn Sie daher JS verwenden, um alle auszuwählen, berücksichtigen Sie daher die Situation, in der ein- und mehrere Kontrollkästchen gleicher genannt werden.
Die Codekopie lautet wie folgt:
Funktion AllSelect () {
var form = document.forms [0];
var state = Form.AllSelectBox.Conted;
var leng = form
// Wenn es einen Kontrollkästchen -Namen gibt, der Benutzernamen ist, Formular.Unernamen gibt ein Kontrollkästchen -Objekt zurück, kein Array, sodass seine Länge nicht definiert ist
if (Länge) {// In JavaScript, solange die beurteilte Bedingung 0, null oder undefiniert ist, wird sie als falsch angesehen, und andere Fälle werden als wahr angesehen
für (var i = 0; i <länge; i ++) {
Form.Unernames [i] .Conted = Status;
}
}
anders{
Form.usernames.Checked = Status;
}
}
Es gibt eine Komponenten -ID von 'Benutzernamen' oder mehrere Komponenten -IDs sind 'Benutzernamen', document.getElementById ('Benutzernamen') den von einer Formularkomponente zurückgegebenen Wert zurück. Wenn mehrere Komponenten -IDs "Benutzernamen" sind, lautet die erste Komponenten -ID "Benutzernamen".
Es gibt einen Komponentennamen "Benutzernamen" oder mehrere Komponentennamen "Benutzernamen", document.getElementsByName () gibt das HTMLCollection -Array zurück. Beachten Sie die Differenz von document.getElementsByTagName (), die das Array entsprechend der Tag -Kategorie erhält.
var names = document.getElementsByTagName ("Benutzernamen"), alert (Namen [0]) Das hier zurückgegebene Ergebnis ist undefiniert. Früher habe ich Byname mit Bytagname gemischt, und kein Tag beginnt mit Benutzernamen. <Benutzernamen value = ''> </userernamen> Das existiert nicht.
Die Rückgabe von GetElementsByTagName ist jedoch immer noch eine Array -Sammlung, die keinen Inhalt enthält. Namen [0] existieren nicht. Daher ist die Rückgabe undefiniert, da der nicht definierte Wert, wenn der Array -Bereich überschritten wird, der undefinierte Wert auftaucht.
var test = {'0', '1', '2',}; alert (test [3]); Gibt undefiniert zurück.