Búsqueda de sitios web

html - JavaScript obtener elemento por nombre


Considera esta función:

function validate()
{
  var acc = document.getElementsByName('acc').value;
  var pass = document.getElementsByName('pass').value;

  alert (acc);
}

Y esta parte de 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>

El cuadro de alerta está mostrando, pero muestra "undefined".

Respuesta #1

La razón por la que estás viendo ese error es porque document.getElementsByName devuelve un NodeList de elementos. Y un NodeList de elementos no tiene una propiedad .value.

Usa esto en su lugar:

document.getElementsByName("acc")[0].value

Respuesta #2

Todas las respuestas aquí parecen estar desactualizadas. Por favor, usa esto ahora:

document.querySelector("[name='acc']");
document.querySelector("[name='pass']")

Respuesta #3

Nota el plural en este método:

document.getElementsByName()

Eso devuelve un arreglo de elementos, así que usa [0] para obtener la primera ocurrencia, por ejemplo.

document.getElementsByName()[0]

Respuesta #4

Tú quieres esto:

function validate() {
    var acc = document.getElementsByName('acc')[0].value;
    var pass = document.getElementsByName('pass')[0].value;

    alert (acc);
}

Artículos relacionados