Considere esta función:
function validate()
{
var acc = document.getElementsByName('acc').value;
var pass = document.getElementsByName('pass').value;
alert (acc);
}
Y esta parte 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>
Se muestra el cuadro de alerta, pero muestra "indefinido".
javascript
html
dom
Juliver Galleto
fuente
fuente
document.getElementById
, que devuelve exactamente un valor.var inputs = document.getElementsByTagName('input')
devuelve una lista de nodos, de la que puede extraer ambos elementos de la siguiente manera: var pass = inputs.item ('pass'). Solo un consejo, esto puede acelerar las cosas si se trata de un DOM grande, yagetElementById
que buscará en todo el árbol cada vez, mientras que una lista de nodos no lo hará, por lo que es más rápido ...Respuestas:
La razón por la que ve ese error es porque
document.getElementsByName
devuelve unNodeList
elemento. Y aNodeList
de elementos no tiene una.value
propiedad.Use esto en su lugar:
fuente
Tenga en cuenta el plural en este método:
Eso devuelve una serie de elementos, así que use [0] para obtener la primera ocurrencia, por ejemplo
fuente
length
propiedad, sino que también se está perdiendo una gran cantidad de métodos, tales comomap
,forEach
, etc. Lo que explica por qué tenemos que utilizar:Array.prototype.forEach.call( NodeList, fn )
.Tu quieres esto:
fuente
getElementsByName
. Tal vez debería haberlo dejado más claro, siéntase libre de editar si lo desea.El método document.getElementsByName devuelve una matriz de elementos. Debe seleccionar primero, por ejemplo.
fuente
fuente