jQuery'else'的问题

时间:2014-01-05 22:36:00

标签: javascript jquery

我不确定我做错了什么但只是我的脚本的前半部分被拾取了。我尝试了各种组合,一次只能使用一个if语句。

if (!$('#LocalDelivery').is(":checked")) {
    $('#datepicker').attr("value", "");
    $('#LocalDate').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
    $('#LocalDate').attr('name',
    $('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name')); 
}    
else
{
if (!$('#StandardShip').is(":checked")) {
    $('#LocalDate').attr("value", "");
    $('#datepicker').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
    $('#datepicker').attr('name',
    $('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));      
}
}

谢谢。

编辑: 为了澄清,我明白“其他”是指其中一种。这里的问题是,即使第二个if语句满足条件,它也不会执行。我只能使用上述代码或我尝试过的任何类似变体,一次得到一个人的反应。

4 个答案:

答案 0 :(得分:2)

尝试

if (!$('#LocalDelivery').is(":checked")) {
    $('#datepicker').attr("value", "");
    $('#LocalDate').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
    $('#LocalDate').attr('name',
    $('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name')); 
}    
if (!$('#StandardShip').is(":checked")) {
    $('#LocalDate').attr("value", "");
    $('#datepicker').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
    $('#datepicker').attr('name',
    $('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name')); 

}

如果你正在使用else,那么如果第一个if返回false,则会执行第二个if,所以你所拥有的就是你期望的。第一个{{1}}返回true,因此忽略第二个。

答案 1 :(得分:2)

尝试:

if ($('#LocalDelivery').is(":checked") == false) {
    $('#datepicker').attr("value", "");
    $('#LocalDate').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
    $('#LocalDate').attr('name',
    $('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name')); 
}    
if ($('#StandardShip').is(":checked") == false) {
    $('#LocalDate').attr("value", "");
    $('#datepicker').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
    $('#datepicker').attr('name',
    $('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name')); 

}

您还可以使用.is(":checked")更改.attr("checked","checked")

修改 我只是注意到你正在尝试在同一个元素#datepicker中实现两个特定的值,这就是必须导致你的第一个条件不被选中的原因。

我的意思是,当未检查两个checbox时,您试图将两个值放在一个元素#datepicker中。

上述意味着代码的逻辑是错误的。例如,您可以只有一个复选框并执行以下操作:

 if ($('#LocalDelivery').is(":checked") == false) {
        $('#datepicker').attr("value", "");
        $('#LocalDate').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
        $('#LocalDate').attr('name',
        $('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name')); 
    } else {
        $('#LocalDate').attr("value", "");
        $('#datepicker').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
        $('#datepicker').attr('name',
        $('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name')); 

    }

答案 2 :(得分:1)

这就是应该如何运作的。如果前半部分为true,则不会执行else块。每次只执行一个块。从来没有

答案 3 :(得分:1)

这就是ifelse的含义。

if (A) {
   B
}
else {
   C
}

如果A,则B否则 C

如果你不打算这个小方程的“其他”部分,那就不要使用else