web-dev-qa-db-ja.com

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>

警告ボックスは表示されていますが、「未定義」と表示されています。

114
Juliver Galleto

document.getElementsByNameは要素のNodeListを返すので、プロパティ.valueはありません。それゆえ、あなたが見ている未定義のエラーです。

欲しいのはdocument.getElementsByName("acc")[0].valueです

221
Aidanc

このメソッドの複数形に注意してください。

document.getElementsByName()

これは要素の配列を返すので、最初の出現を得るために[0]を使います。

document.getElementsByName()[0]
23
Ozzy

あなたはこれを求めている:

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

    alert (acc);
}
10
document.getElementsByName("myInput")[0].value;
5
Sam Battat

メソッドdocument.getElementsByNameは要素の配列を返します。たとえば、最初に選択する必要があります。

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