为了账号安全,请及时绑定邮箱和手机立即绑定

请问这段代码如何缩写?

请问这段代码如何缩写?

白衣染霜花 2019-02-25 13:23:42
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

看得我头皮发麻,你想要实现一个什么功能能一起贴出来吗?就我能了解到的信息,你至少可以先用一个策略模式来改变这 满屏 ifelse的困境,比如说:


if(NewOSelects.eq(0).val()==1){

    NewOSelects.eq(1).find("option:eq(1)").attr("disabled","disabled");

    NewOSelects.eq(2).find("option:eq(1)").attr("disabled","disabled");

    NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");

    NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");

}else if(NewOSelects.eq(0).val()==2){

    NewOSelects.eq(1).find("option:eq(2)").attr("disabled","disabled");

    NewOSelects.eq(2).find("option:eq(2)").attr("disabled","disabled");

    NewOSelects.eq(0).find("option:eq(1)").attr("disabled","disabled");

    NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");

}else if(NewOSelects.eq(0).val()==3){

    NewOSelects.eq(1).find("option:eq(3)").attr("disabled","disabled");

    NewOSelects.eq(2).find("option:eq(3)").attr("disabled","disabled");

    NewOSelects.eq(0).find("option:eq(1)").attr("disabled","disabled");

    NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");

};

var handle = {

    "type_1" : function(NewOSelects){

        NewOSelects.eq(1).find("option:eq(1)").attr("disabled","disabled");

        NewOSelects.eq(2).find("option:eq(1)").attr("disabled","disabled");

        NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");

        NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");

    }

    ....

}


//调用

handle["type_"+NewOSelects.eq(0).val()](NewOSelects);

其他的还可以继续优化,但太多了,写起来很烦就算了。。。自己想办法提取出能够合并的项,然后把变化的部分当成参数发过去就行了。。


查看完整回答
反对 回复 2019-03-06
?
跃然一笑

TA贡献1826条经验 获得超6个赞

我这做了两个假设

一是NewOSelects只有0,1,2

二是option只有1,2,3


不符合的话你再告诉我...


然后缩减实际上就是求补集


if (NewOSelects.length > 1) {

  let value

  

  value = NewOSelects.eq(0).val();

  NewOSelects.not(':eq(0)').find(`option:eq(${value})`).attr("disabled", "disabled");

  NewOSelects.eq(0).find('option').not(`:eq(${value})`).attr("disabled", "disabled");


  value = NewOSelects.eq(1).val();

  NewOSelects.not(':eq(1)').find(`option:eq(${value})`).attr("disabled", "disabled");

  NewOSelects.eq(1).find('option').not(`:eq(${value})`).attr("disabled", "disabled");

}


查看完整回答
反对 回复 2019-03-06
  • 2 回答
  • 0 关注
  • 506 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信