javascript - 为什么此代码会警告三个未定义的值?

标签 javascript dom

为什么此代码会警告三个未定义的值?

    <html>
        <head>
            <script type="text/javascript" language="javascript">
            function doIt(form){
                alert(form.elements.length)
                for (var i in form.elements){
                    alert(form.elements[i].value);
                }
            }
            </script>
        </head>
        <body id="body">
            <form method="GET" action="http://localhost/sandbox/moving/controllers/companies/cSubmit_bid.php">
               <input type="button" value="Go" onclick="doIt(this.form)">
            </form>
        </body>
    </html>

提前谢谢您。

最佳答案

您遇到了问题,因为 form.elements 中的数组不是真正的数组。它是一个 HTMLCollection ,它是一个类似数组的对象。因此,它不能使用 for...in 循环进行迭代。切换到标准 for 循环,它按预期工作。

for...in 循环实际上是用于迭代对象的属性。不建议在数组上使用(请参阅 description section here )。

关于javascript - 为什么此代码会警告三个未定义的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3337797/

相关文章:

javascript - 为什么将 "disabled"属性设置为 false 也会删除 "disabled"属性?

java - 使用 "$XYZ"创建 XML 元素

javascript - 在 phantomjs 中访问 iframe 的 contentDocument

jquery - 在 DOM 上可视化地交换两个 HTML 元素,然后将其全部动画化?

javascript - 如何判断 DOM 元素在当前视口(viewport)中是否可见?

javascript - ESM 树摇动/死代码消除如何工作?

javascript - jQuery Deferred 的递归 Promise 函数有什么问题

javascript - 使用嵌套 $.each 循环对象

Javascript - 有选择地禁用 Key Down

javascript - 读取从 NewCookie() 创建的 cookie