1

我试图将一组 INPUT 元素分组到一个 Javascript 数组中,并且对为什么我得到一个多维数组(下面的代码中名为“urls”的数组)感到困惑。原来我把第四个元素和第一个元素的 id 混合在一起了。

<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),则该属性将包含一个 NodeList 而不是单个 HTMLElementNode。

第一个输入具有名称(和 id)url1。最后一个输入有 idurl1

所以form.url1就变成了一个由这两个元素组成的 NodeList。

于 2012-11-02T10:47:22.780 回答