javascript If-Else块跳转到Else,即使条件标记为true

javascript If-Else块跳转到Else,即使条件标记为true,javascript,Javascript,我试图根据复选框中的真值或假值执行操作。使用If:Else语句,我测试复选框值是否为“true”,即使复选框值标记为“true”,它也会进入我语句的Else部分 谁能给我解释一下原因吗 var CheckedBoxs = $(stepTitle + " input:checkbox"); for (var val in CheckedBoxs) { if (val.toString() === "length") {

我试图根据复选框中的真值或假值执行操作。使用If:Else语句,我测试复选框值是否为“true”,即使复选框值标记为“true”,它也会进入我语句的Else部分

谁能给我解释一下原因吗

        var CheckedBoxs = $(stepTitle + " input:checkbox");
        for (var val in CheckedBoxs) {
            if (val.toString() === "length") {
                break;
            } //End IF
            if (CheckedBoxs[val].value === "true") {
                OneUp = parseInt(val) + 1;
                var PriceTag = "  -$";
                PriceTag += HiddenInput[OneUp].name.substring(HiddenInput[OneUp].name.indexOf(":") + 1, HiddenInput[OneUp].name.length);
                Lbls[val].innerHTML = Lbls[val].innerHTML + '<span class="PriceChange">' + PriceTag + "</span>";
            } else {
                OneUp = parseInt(val) + 1;
                var PriceTag = "  +$";
                PriceTag += HiddenInput[OneUp].name.substring(HiddenInput[OneUp].name.indexOf(":") + 1, HiddenInput[OneUp].name.length);
                Lbls[val].innerHTML = Lbls[val].innerHTML + '<span class="PriceChange">' + PriceTag + "</span>";
            }//End If
        }//End For
var CheckedBoxs=$(stepTitle+“输入:复选框”);
for(复选框中的var val){
if(val.toString()=“长度”){
打破
}//如果结束,则结束
如果(CheckedBoxs[val]。值==“true”){
OneUp=parseInt(val)+1;
var PriceTag=“-$”;
PriceTag+=HiddenInput[OneUp].name.substring(HiddenInput[OneUp].name.indexOf(“:”)+1,HiddenInput[OneUp].name.length);
Lbls[val].innerHTML=Lbls[val].innerHTML+''+PriceTag+'';
}否则{
OneUp=parseInt(val)+1;
var PriceTag=“+$”;
PriceTag+=HiddenInput[OneUp].name.substring(HiddenInput[OneUp].name.indexOf(“:”)+1,HiddenInput[OneUp].name.length);
Lbls[val].innerHTML=Lbls[val].innerHTML+''+PriceTag+'';
}//如果结束
}//结束
我见过很多关于If:Else语句的问题,但找不到一个包含复选框的,如果这是重复的,我道歉。

两件事

首先

for(CheckedBoxs中的var val){

这不是在数组上循环的方式;只在对象文本的属性上使用该循环

第二

if(CheckedBoxs[val].value==“true”){

应该是

if(CheckedBoxs[val]。选中){

两件事

首先

for(CheckedBoxs中的var val){

这不是在数组上循环的方式;只在对象文本的属性上使用该循环

第二

if(CheckedBoxs[val].value==“true”){

应该是

if(CheckedBoxs[val]。选中){


我曾尝试在Intellience中使用true和“true”。。值以字符串形式返回,checked以布尔值形式返回。
CheckedBoxs[val]。is(“:checked”)
CheckedBoxs[val]。is(“:checked”)尝试了此操作,但返回的结果不太准确:Unfinedi尝试使用true和“true”,在Intellience中:。value以字符串形式返回,.checked以布尔值形式返回。
CheckedBoxs[val]。is(“:checked”)
CheckedBoxs[val]。is(“:checked”)不幸地尝试了这一操作,它返回:undefinedal因此,如果它们确实是复选框,“value”属性将是常量;可能应该测试的是“checked”属性。您不应该检查“checked”状态吗?
CheckedBoxs[val]。是(“:checked”);
?var CheckedBoxs=$(stepTitle+“input:checkbox”);这不会生成文字对象吗?我当然不会觉得它像数组。如上所述,CheckedBoxs[val]是(“:checked”);?这不起作用。@DirtyRedz,它生成一个类似数组的对象。尽管如此,您还是应该使用
。each()
循环。而且,如果它们确实是复选框,那么“value”属性将是常量;可能应该测试的是“checked”属性。您不应该检查“checked”状态吗?
CheckedBoxs[val]。是否(“:checked”)
?var CheckedBoxs=$(stepTitle+“input:checkbox”);这不会生成一个文字对象吗?在我看来肯定不像数组。如上所述,CheckedBoxs[val]。是(“:checked”);?这不起作用。@DirtyRedz生成一个类似数组的对象。不过,您应该使用
.each()