Javascript:有没有办法在其他函数中选择切换案例?

时间:2016-08-11 19:42:01

标签: javascript

这是代码的破解部分:

addSkillButton(stonewall);

从其他函数调用的object参数运行正常。它转到switch语句,选择正确的大小写,然后执行代码。但是我遇到的问题是使用addSkillButton()函数。我可以手动输入一个对象,它会正常工作,但我的技能系统是动态的。我需要它根据案例编号拉取对象名称。

如果您查看下面的代码,您会发现技能deepcut和& stonewall位于第1位。这些是在用户尝试升级时在子菜单中弹出的技能。这在打开时效果很好,但选择和添加技能变得棘手,因为我不确定如何告诉javascript选择了哪个案例编号,因此在位置1中选择该对象名称。

这就是我想要它说或做的事情:

addSkillButton(Get Object in Position 1 from Case Number)

这是我的代码:

function radialSelector(object){
   switch (object){
      case strike:
      radialSubMenuSkills("position1", deepcut);  
      radialSubMenuSkills("position2", balancedstrike);   
      radialSubMenuSkills("position3", fury);
      break;
      case defend:
      radialSubMenuSkills("position1", stonewall);    
      radialSubMenuSkills("position2", digin);    
      radialSubMenuSkills("position3", holdtheline);
      break;
      default:
      console.log("radialSelector() has set its switch statement to default")
  }


  $('#upgradeSkillsBar').on('click', '#position1', function(){
      removeSkillButton(object);
      addSkillButton(stonewall);
      removeRadialSubMenu();
  });

}

1 个答案:

答案 0 :(得分:1)

只需使用数组。

var skills;
switch(object) {
    case strike:
        skills = [deepcut, balancedstrike, fury];
        break;
    case defend:
        skills = [stonewall, digin, holdtheline];
        break;
    default:
        throw new Error("Invalid condition");
}
for( var i=0, l=skills.length; i<l; i++) {
    radialSubMenuSkills("position"+(i+1), skills[i]);
}
$("#upgradeSkillsBar").on("click", "#position1", function() {
    removeSkillButton(object);
    addSkillButton(skills[0]);
    removeRadialSubMenu();
});