如果,否则如果语句无法正常工作

if, else if statement not working correctly

本文关键字:如果 常工作 工作 语句      更新时间:2023-09-26

一切都很好,直到我进入第二个else if,当两个div都被激活时。出于某种原因,只有#project-wrapper才能删除类。我写错了第二个else if吗?

$('.site-title a').click(function(e) {
    e.preventDefault();
    if($('#project-wrapper').hasClass('activated')){
        $('#project-wrapper').removeClass('activated').css('max-height', '');
    }
    else if($('#contact-me').hasClass('activated')){
        $('#contact-me').removeClass('activated');
    }
    else if( ($('#project-wrapper').hasClass('activated')) && ($('#contact-me').hasClass('activated')) ){
        $('#contact-me').removeClass('activated');
        $('#project-wrapper').removeClass('activated');
    }
    else {
    }
});

首先检查"两者"条件,否则将永远不会检查该条件:

if( $('#project-wrapper').hasClass('activated') && $('#contact-me').hasClass('activated') ) {
  $('#contact-me, #project-wrapper').removeClass('activated');
}
else if($('#project-wrapper').hasClass('activated')){
  $('#project-wrapper').removeClass('activated').css('max-height', '');
}
else if($('#contact-me').hasClass('activated')){
  $('#contact-me').removeClass('activated');
}
else {
}

您需要切换 if 状态,因为第二个 if 永远不会被击中

$('.site-title a').click(function(e) {
    e.preventDefault();
    if( ($('#project-wrapper').hasClass('activated')) && ($('#contact-me').hasClass('activated')) ){
        $('#project-wrapper').removeClass('activated').css('max-height', '');
    }
    else if($('#contact-me').hasClass('activated')){
        $('#contact-me').removeClass('activated');
    }
    else if($('#project-wrapper').hasClass('activated')){
        $('#contact-me').removeClass('activated');
        $('#project-wrapper').removeClass('activated');
    }
    else {
    }
});

只需删除"else"部分并将所有条件保留在单独的"if"中即可。那应该有效

$('.site-title a').click(function(e) {
    e.preventDefault();
    if( ($('#project-wrapper').hasClass('activated')) && ($('#contact-me').hasClass('activated')) ){
        $('#contact-me').removeClass('activated');
        $('#project-wrapper').removeClass('activated');
    }
    if($('#project-wrapper').hasClass('activated')){
        $('#project-wrapper').removeClass('activated').css('max-height', '');
    }
    if($('#contact-me').hasClass('activated')){
        $('#contact-me').removeClass('activated');
    }
});

在你的代码中,第二个"else-if"语句永远不会被到达,因为它要求两个元素都有类"激活",如果是这种情况,那么第一个"if"将启动,不会发生任何其他事情......(所有"else if"语句...