web-dev-qa-db-fra.com

JavaScript obtenir élément par nom

Considérons 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 est affichée, mais elle indique "non défini".

116
Juliver Galleto

document.getElementsByName renvoie une liste d'éléments (NodeList), qui n'a donc pas la propriété .value. d'où l'erreur non définie que vous voyez.

Ce que vous voulez, c'est document.getElementsByName("acc")[0].value

226
Aidanc

Notez le pluriel dans cette méthode:

document.getElementsByName()

Cela retourne un tableau d'éléments, utilisez donc [0] pour obtenir la première occurrence, par exemple.

document.getElementsByName()[0]
24
Ozzy

Tu veux ça:

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

    alert (acc);
}
10
Elliot Bonneville

La méthode document.getElementsByName renvoie un tableau d'éléments. Vous devez sélectionner en premier, par exemple.

document.getElementsByName('acc')[0].value
6
dalazx
document.getElementsByName("myInput")[0].value;
5
Sam Battat