Javascript 在for-in循环之后执行代码的问题

Javascript 在for-in循环之后执行代码的问题,javascript,forms,for-loop,submit,Javascript,Forms,For Loop,Submit,我有一个添加了多个动态行的表单,我想在提交表单之前对输入进行一些验证,例如检查所有字段是否都有输入等等。 因此,当我在提交按钮上有onclick事件时,我调用这个小函数: function validateAndSubmit() { var form = document.getElementById("mainForm"); var formGroups = document.getElementsByClassName("form-group"); for (var x in formGro

我有一个添加了多个动态行的表单,我想在提交表单之前对输入进行一些验证,例如检查所有字段是否都有输入等等。 因此,当我在提交按钮上有onclick事件时,我调用这个小函数:

function validateAndSubmit() {
var form = document.getElementById("mainForm");
var formGroups = document.getElementsByClassName("form-group");
for (var x in formGroups) {
    // Validation goes here
    ....
    if (valid == false) {
        return;
    }
}
form.submit();
因此,在我的逻辑中,代码应该迭代每个表单组(基本上代表表单中的各个行),并检查它们是否有效。在第一个无效行之后,函数将返回,而不返回任何结果。但是如果选中了所有formGroups,则for循环将退出,
form.submit()呼叫将提交表单

然而,最终提交并没有发生。即使所有表单元素都有有效输入,表单也不会提交。然而,在一些调试过程中,我注释掉了整个for循环,表单提交了,当然没有验证。 所以我假设for循环无法正常退出,可能需要一些帮助来解决这个问题

整个项目都是用纯Javascript编写的,但是,我用来动态添加和删除表单项的库基于jQuery


作为参考,您可以在网上找到一开始不应该用于的项目。只需使用普通格式:

for(var i=0;i<formGroups.length;i++)

for(var i=0;i您还可以使用jQuery选择器来获取元素

$('.form-control').each(function() {
    // Validation goes here
    console.log($(this));
});

虽然你的答案是正确的,但有趣的是,OP代码中的
formGroups
实际上是一个对象,而不是数组。你能解释一下区别吗?谢谢,你指出了一个有趣的事实:数组是javascript中的一种对象,而.length()是数组对象的一种方法。正确的单词应该是“因为in只用于字典…”实际上我是在寻找,它是一个对象,而不是数组。