4个复选框,如果选中2个或更多复选框,我想随机触发1个与其中一个复选框关联的功能

时间:2016-12-19 02:51:58

标签: javascript jquery angularjs

对不起,如果标题一团糟,让我试着让它变得更容易......

让我们说复选框为每个复选框返回以下内容:

checkboxOne = false;
checkboxTwo = true;
checkboxThree = true;
checkboxFour = true;    

我还有4个功能:

userFuncOne() {...}
userFuncTwo() {...}
userFuncThree() {...}
userFuncFour() {...}

如果两个或多个复选框为true,我希望随机触发一个函数,但只有与true值相关联的函数。因此,在上面的示例中,userFuncOne()无法触发,但其余部分可以触发,并且其中只有一个会被随机触发。

我如何最有效地做到这一点?显然,我可以做一堆其他的,但这看起来非常低效。

有更好的方法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

以下是我评论中的示例摘录,也许是您追求的内容?您可能想要调整它,它只是一个概念证明:)



function funcA(){console.log('funcA');}
function funcB(){console.log('funcB');}
function funcC(){console.log('funcC');}
function funcD(){console.log('funcD');}

var functionList = [];

function oncheckBoxClick(cBox){
  var funName = cBox.dataset.fname;
  if(cBox.checked){
    functionList.push(funName);
  }
  else{    
    var index = functionList.indexOf(funName);    
      
    if (index > -1) {
      functionList.splice(index, 1);
    }
  }
  
   if(functionList.length>=2){
     var randomIndex = Math.floor(Math.random() * functionList.length);
     this[functionList[randomIndex]]();   
     }
    
}

<input type="checkbox"  onclick="oncheckBoxClick(this)" data-fname="funcA" />
<input type="checkbox"  onclick="oncheckBoxClick(this)" data-fname="funcB" />
<input type="checkbox"  onclick="oncheckBoxClick(this)" data-fname="funcC" />
<input type="checkbox"  onclick="oncheckBoxClick(this)" data-fname="funcD" />
&#13;
&#13;
&#13;