1

一連の INPUT 要素を Javascript 配列にグループ化しようとしていたのですが、なぜ多次元配列を取得したのか混乱しました (以下のコードでは「urls」という名前の配列)。最初の要素と同じ ID を持つ 4 番目の要素を混同していたことが判明しました。

<html>

<head>
    <script language="javascript">
    function validate() {
        var form = document.forms.conf;

        var urls = new Array(form.url1, form.url2, form.url3, form.url4);
        alert(urls[0].value);  // returns 'undefined'
        alert(urls[0][0].value);  // works
    }
    </script>
</head>

<body>

<form name="conf">
    <input type="text" name="url1" id="url1">
    <input type="text" name="url2" id="url2">
    <input type="text" name="url3" id="url3">
    <input type="text" name="url4" id="url1"><br />
    <button type="button" onclick="javascript:validate();">Push me</button>
</form>

</body>
</html

私の質問は、なぜこれが起こるのですか?HTML属性「id」は「document.forms.form_name.element」とどのような関係にありますか? そして、なぜそれを多次元配列に入れるのでしょうか? 動作も同じクロスブラウザーのように見えるので、私が認識していない定義である必要があります。

4

1 に答える 1

2

フォームには、名前または ID を持つ各フォーム コントロールのプロパティがあります。そのプロパティの名前は、名前または ID と同じになります。複数の要素が名前 (または不正に ID) を共有する場合、プロパティには単一の HTMLElementNode ではなく NodeList が含まれます。

最初の入力には name (および id) がありurl1ます。最後の入力には id がありますurl1

したがってform.url1、これら 2 つの要素で構成される NodeList になります。

于 2012-11-02T10:47:22.780 に答える