152

この関数について考えてみましょう。

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>

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

4

7 に答える 7

288

このエラーが表示される理由は、要素document.getElementsByNameのaを返すためです。NodeListそして、要素のaにはプロパティNodeListがありません。.value

代わりにこれを使用してください:

document.getElementsByName("acc")[0].value
于 2012-04-24T21:19:27.553 に答える
34

この方法では複数形に注意してください。

document.getElementsByName()

これは要素の配列を返すので、[0]を使用して最初の出現を取得します。

document.getElementsByName()[0]
于 2012-04-24T21:21:12.170 に答える
15

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

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

    alert (acc);
}
于 2012-04-24T21:20:23.000 に答える
15

ここにあるすべての回答は時代遅れのようです。今すぐこれを使用してください:

document.querySelector("[name='acc']");
document.querySelector("[name='pass']")
于 2021-02-10T07:31:27.713 に答える
8

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

document.getElementsByName('acc')[0].value
于 2012-04-24T21:21:38.447 に答える
6
document.getElementsByName("myInput")[0].value;
于 2012-04-24T21:20:47.793 に答える
0

完全を期すために、これを読んでいる他の人がセーフティネットについて良い考えを持っているので、特に必要な要素を取得する保証がない場合は、null合体を使用してデフォルトを設定して欠落値をテストできます。

const accElements = document.getElementsByName('acc');
const accElement = accElements[0] ?? null; // Or some other value
if (!accElement) {
    // handle the problem
}

また、接続されたオブジェクトの場合はオプションのチェーンを使用します(配列/ノードが返されることはありません)。

const acc = document.getElementById('acc')?.value ?? null; // Or some other value

また、name属性が利用可能なすべてである場合もありますが、id一意である可能性が高いため、可能な場合は使用するようにしてください。目的の要素が結果インデックス0()にあると仮定すると、[0]通常は安全ですが、確認して確認することをお勧めします。数行のコード(おそらくいくつかのロギングを含む)で、エンドユーザーが問題を壊す問題を回避できます。

于 2021-12-06T15:46:27.847 に答える