Javascript 如何读取具有循环(for)的对象?
嗯,我一直在寻找如何用一个循环(for)检查所有对象的属性,但没有找到太多 我一直在使用JS和jquery进行注册表表单验证,我为每个字段添加了一个带有属性(Javascript 如何读取具有循环(for)的对象?,javascript,jquery,Javascript,Jquery,嗯,我一直在寻找如何用一个循环(for)检查所有对象的属性,但没有找到太多 我一直在使用JS和jquery进行注册表表单验证,我为每个字段添加了一个带有属性(false或true)的对象,只是为了知道字段是否填写不正确。我想检查所有属性以查找false,如果有,请禁用按钮。我试着这样读这个物体: for(var p in flags){ // flags = object if(p == false){ flagStatus = false
false
或true
)的对象,只是为了知道字段是否填写不正确。我想检查所有属性以查找false
,如果有,请禁用按钮。我试着这样读这个物体:
for(var p in flags){ // flags = object
if(p == false){
flagStatus = false;
}
}
if(flagStatus )
$("#subReg").attr("disabled", false);
else
$("#subReg").attr("disabled", true);
我不确定我错过了什么。任何帮助都会很好的,泰
编辑:
您需要获取/比较值,而不是键。试试这个:
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
指的是对象中的键,而标志[p]
指的是值
在上面的示例中,遇到的第一个p
是“key1”,而flags[p]
是true
。接下来,p
是“key2”,而flags[p]
是false
——因此如果语句通过,flagStatus
被设置为false
,循环停止
此外,您还可以将末尾(循环之后)的代码组合为:
所以你不需要if/else:)你能展示一下标志的样子吗?您的循环看起来不错,但p
指的是键。您的意思是if(flags[p]==false){
?这将获得值。此外,您可能希望在if
语句中添加break;
,以便在某些内容匹配时立即停止循环。乍一看应该有效,您会得到什么错误?请尝试$(“#subc”).prop(“禁用”,false);
@Nomad101否,设置禁用的
属性,您要使用.prop()
。如果您要设置样式,您应该使用.css()
非常抱歉现在编辑错误。这是一个foreach循环?为什么需要使用索引器?或者我对javascript中foreach循环的理解有误?很好,打电话给我的朋友,是我的问题,我得到的是钥匙而不是阀门。thx@Nomad101这不是foreach[即,值的迭代器]嗯,我明白了,很有趣,好吧,你每天都会学到一些新东西。
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);
$("#subReg").attr("disabled", !flagStatus);