Javascript条件:与&;混淆&;

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]

我正在解压缩从表单收集的一些数据并设置对象属性。如果输入是文本,我将存储该值。如果是复选框,则存储“checked”属性。如果它是一个收音机,并且它被检查过,我正在存储值。 这是我的密码:

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=“重量”