JavaScript получить элемент по имени

Рассмотрим эту функцию:

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

  alert (acc);
}

И эта часть 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>

Появляется окно предупреждения, но оно показывает "undefined".

Ответ 1

document.getElementsByName возвращает NodeList элементов, поэтому он не имеет свойства .value. следовательно, ошибка undefined, которую вы видите.

Вы хотите document.getElementsByName("acc")[0].value

Ответ 2

Обратите внимание на множественное число в этом методе:

document.getElementsByName()

Это возвращает массив элементов, поэтому используйте [0], чтобы получить первое вхождение, например.

document.getElementsByName()[0]

Ответ 3

Вы хотите:

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

    alert (acc);
}

Ответ 4

document.getElementsByName("myInput")[0].value;

Ответ 5

Метод document.getElementsByName возвращает массив элементов. Вы должны выбрать сначала, например.

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