如何用循环(for)读取对象?

时间:2013-05-03 21:33:12

标签: javascript jquery

好吧,我一直在寻找如何用周期检查所有对象的属性(for)并且找不到很多。

我一直在使用JS和jquery进行注册表单验证,我为每个字段添加了一个带有属性(falsetrue)的对象,只是为了知道某个字段是不是填写正确。我想检查所有寻找false的属性,如果有,请禁用该按钮。我试着读这样的对象:

for(var p in flags){ // flags = object
            if(p == false){
                flagStatus = false;
            }
        }
        if(flagStatus )
            $("#subReg").attr("disabled", false);   
        else
            $("#subReg").attr("disabled", true);

我不确定我错过了什么。任何帮助都会很棒,ty。

编辑:

var flags = {nick: false, pass:false, passVer:false, genero:false, pais:false, fechaNac:false, nombre:false, apellido:false, email:false, checkBox:false, captcha:false};

1 个答案:

答案 0 :(得分:1)

您需要获取/比较,而不是。试试这个:

var flags = {key1: true, key2: false, key3: true};
var flagStatus = true;
for (var p in flags){
    if (flags[p] === false) {
        flagStatus = false;
        break;
    }
}
if (flagStatus)
    $("#subReg").attr("disabled", false);   
else
    $("#subReg").attr("disabled", true);

循环时,p引用对象中的,而flags[p]引用

在上面的示例中,遇到的第一个p是“key1”,flags[p]true。接下来,p为“key2”,flags[p]false - 因此if语句通过,flagStatus设置为false,循环停止。

此外,您可以将结尾处(循环之后)的代码组合为:

$("#subReg").attr("disabled", !flagStatus);

所以你不需要if / else:)