Javascript条件:与&;混淆&;
我正在解压缩从表单收集的一些数据并设置对象属性。如果输入是文本,我将存储该值。如果是复选框,则存储“checked”属性。如果它是一个收音机,并且它被检查过,我正在存储值。 这是我的密码:Javascript条件:与&;混淆&;,javascript,firebug,Javascript,Firebug,我正在解压缩从表单收集的一些数据并设置对象属性。如果输入是文本,我将存储该值。如果是复选框,则存储“checked”属性。如果它是一个收音机,并且它被检查过,我正在存储值。 这是我的密码: for (var key in assessment_data) { if(assessment_data.hasOwnProperty(key)){ var type = assessment_data[key].type; var name = assessment_data[key]
for (var key in assessment_data) {
if(assessment_data.hasOwnProperty(key)){
var type = assessment_data[key].type;
var name = assessment_data[key].name;
var isThisChecked = assessment_data[key].checked;
if (type === "text") {
this[key] = assessment_data[key].value;
}
else if (type === "checkbox") {
this[key] = assessment_data[key].checked;
}
else if (type === "radio" && isThisChecked) {
this[name] = assessment_data[key].value;
}
}
}
我得到了一些属性的意外值,所以我在Firebug中单步执行它,发现最后一个else if
在不应该执行的时候正在执行。例如,当type=“button”且checked=false时,最后一个中的代码仍在执行。这是在那一步的一个步骤。您可以看到条件中的变量及其右侧的值。为什么会碰到这个密码
编辑:我更改了问题中的变量名,使其更清晰,并展示了一个新的屏幕截图,显示Firebug中的代码匹配。此外,以下是评估_数据对象的内容:
编辑2:
我找到了问题的原因(其他地方的一个坏条件:if(this.height\u type=“Length”))。
我还发现上一个else中的代码并没有像我想象的那样真正执行。Firebug让它看起来像是在执行,我真的不明白为什么。当您单步执行时,显示您在哪一行的黄色>停止在if语句中的那一行,但代码实际上没有运行。我能够在jsfiddle中重现这一点:。我不明白它为什么这么做,但目前我很高兴
评估日期对象{value=“05/01/2013”,选中=false,type=“text”}
选中:false
名称:未定义
键入:“文本”
价值:“05/01/2013”
child\u name对象{name=“child\u name”,checked=false,type=“text”}
选中:false
姓名:“孩子的名字”
键入:“文本”
值:“”
dob Object{value=“05/01/2009”,checked=false,type=“text”}
选中:false
名称:未定义
键入:“文本”
价值:“05/01/2009”
女性对象{value=“female”,name=“gender”,checked=false,更多…}
选中:false
名称:“性别”
键入:“收音机”
价值观:“女性”
head_cm对象{checked=false,type=“text”,value=”“}
选中:false
名称:未定义
键入:“文本”
值:“”
对象{checked=false,type=“text”,value=”“}中的head\u
选中:false
名称:未定义
键入:“文本”
值:“”
head\u units\u cm对象{value=“cm”,name=“head\u units”,checked=false,更多…}
选中:false
名称:“主管单位”
键入:“收音机”
值:“cm”
对象{value=“in”,name=“head\u units”中的head\u units\u,checked=true,more…}
选中:正确
名称:“主管单位”
键入:“收音机”
价值:“在”
高度\u cm对象{checked=false,type=“text”,value=”“}
选中:false
名称:未定义
键入:“文本”
值:“”
高度\英尺对象{value=“42”,选中=false,type=“text”}
选中:false
名称:未定义
键入:“文本”
值:“42”
对象{value=“42”中的高度_,选中=false,type=“text”}
选中:false
名称:未定义
键入:“文本”
值:“42”
高度类型对象{value=“height”,name=“height\u type”,checked=true,更多…}
选中:正确
名称:“高度类型”
键入:“收音机”
值:“高度”
高度单位厘米对象{value=“cm”,name=“高度单位”,选中=假,更多…}
选中:false
名称:“高度单位”
键入:“收音机”
值:“cm”
对象{value=“ft\u in”,name=“height\u units”,checked=false,更多…}
选中:false
名称:“高度单位”
键入:“收音机”
值:“英尺英寸”
对象中的高度单位{value=“in”,name=“height\u units”,checked=true,more…}
选中:正确
名称:“高度单位”
键入:“收音机”
价值:“在”
长度类型对象{value=“length”,name=“height\u type”,checked=false,更多…}
选中:false
名称:“高度类型”
键入:“收音机”
值:“长度”
男性对象{value=“male”,name=“gender”,checked=true,更多…}
选中:正确
名称:“性别”
键入:“收音机”
价值观:“男性”
重新加载对象{value=“清除并\n重新开始”,checked=false,type=“button”}
选中:false
名称:未定义
键入:“按钮”
值:“清除并\n重新开始”
使用头围对象{value=“头围”,checked=false,type=“checkbox”}
选中:false
名称:未定义
键入:“复选框”
值:“头围”
使用高度对象{value=“height”,checked=true,type=“checkbox”}
选中:正确
名称:未定义
键入:“复选框”
值:“高度”
使用权重对象{value=“weight”,checked=true,type=“checkbox”}
选中:正确
名称:未定义
键入:“复选框”
值:“重量”
重量_kg对象{选中=false,type=“text”,value=”“}
选中:false
名称:未定义
键入:“文本”
值:“”
weight_lb Object{value=“47”,checked=false,type=“text”}
选中:false
名称:未定义
键入:“文本”
值:“47”
权重对象{checked=false,type=“text”,value=”“}
选中:false
名称:未定义
键入:“文本”
值:“”
重量单位物体{value=“kg”,name=“重量单位”,选中=假,更多…}
选中:false
名称:“重量单位”
键入:“收音机”
数值:“kg”
权重单位对象{value=“lb”,name=“权重单位”,选中=false,更多…}
选中:false
名称:“重量单位”
键入:“收音机”
值:“磅”
重量单位磅盎司对象{value=“磅盎司”,name=“重量”