Considérez cette fonction:
function validate()
{
var acc = document.getElementsByName('acc').value;
var pass = document.getElementsByName('pass').value;
alert (acc);
}
Et cette partie HTML:
<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>
La boîte d'alerte s'affiche, mais elle indique «indéfini».
javascript
html
dom
Juliver Galleto
la source
la source
document.getElementById
, qui renvoie exactement une valeur.var inputs = document.getElementsByTagName('input')
:, renvoie une liste de nœuds, à partir de laquelle vous pouvez extraire les deux éléments comme ceci: var pass = inputs.item ('pass'). Juste un conseil, cela peut accélérer les choses si vous avez affaire à un gros DOM, tout comme lagetElementById
recherche de l'arbre entier à chaque fois, alors qu'une liste de nœuds ne le fera pas, donc c'est plus rapide ...Réponses:
La raison pour laquelle vous voyez cette erreur est que
document.getElementsByName
renvoie unNodeList
élément. Et unNodeList
des éléments n'a pas de.value
propriété.Utilisez plutôt ceci:
la source
Notez le pluriel dans cette méthode:
Cela renvoie un tableau d'éléments, utilisez donc [0] pour obtenir la première occurrence, par exemple
la source
length
propriété, mais il manque aussi beaucoup de méthodes, telles quemap
,forEach
, etc. Ce qui explique pourquoi nous devons utiliser:Array.prototype.forEach.call( NodeList, fn )
.Tu veux ça:
la source
getElementsByName
. J'aurais peut-être dû clarifier cela - n'hésitez pas à modifier si vous le souhaitez.La méthode document.getElementsByName renvoie un tableau d'éléments. Vous devez d'abord sélectionner, par exemple.
la source
la source