Betrachten Sie diese Funktion:
function validate()
{
var acc = document.getElementsByName('acc').value;
var pass = document.getElementsByName('pass').value;
alert (acc);
}
Und dieser HTML-Teil:
<table border="0" cellpadding="2" cellspacing="0" valign="top">
<tr>
<td class="td1">Account</td>
<td class="td2"><input type="text" name="acc" /></td>
</tr>
<tr class="td1">
<td>Password</td>
<td class="td2"><input type="password" name="pass" /></td>
</tr>
</table>
<div><button onClick="validate()" class="cupid-greenx">Login now</button></div>
Das Warnfeld wird angezeigt, aber "undefiniert".
javascript
html
dom
Juliver Galleto
quelle
quelle
document.getElementById
, das genau einen Wert zurückgibt.var inputs = document.getElementsByTagName('input')
, gibt eine Knotenliste zurück, aus der Sie beide Elemente wie folgt extrahieren können: var pass = inputs.item ('pass'). Nur ein Tipp, dies kann die Dinge beschleunigen, wenn Sie mit einem großen DOM zu tun haben, dagetElementById
jedes Mal der gesamte Baum durchsucht wird, während dies bei einer Knotenliste nicht derAntworten:
Der Grund, warum Sie diesen Fehler sehen, ist, dass
document.getElementsByName
einNodeList
Element zurückgegeben wird. Und einNodeList
Element hat keine.value
Eigenschaft.Verwenden Sie stattdessen Folgendes:
quelle
Beachten Sie den Plural in dieser Methode:
Das gibt ein Array von Elementen zurück. Verwenden Sie also [0], um das erste Vorkommen zu erhalten, z
quelle
length
Eigenschaft, aber es fehlt auch eine Menge von Methoden, wie zum Beispielmap
,forEach
usw. , die erklärt , warum wir verwenden müssen:Array.prototype.forEach.call( NodeList, fn )
.Du willst das:
quelle
getElementsByName
. Vielleicht hätte ich das klarer machen sollen - Sie können es jederzeit bearbeiten, wenn Sie möchten.Die Methode document.getElementsByName gibt ein Array von Elementen zurück. Sie sollten zum Beispiel zuerst auswählen.
quelle
quelle