对不起,如果标题一团糟,让我试着让它变得更容易......
让我们说复选框为每个复选框返回以下内容:
checkboxOne = false;
checkboxTwo = true;
checkboxThree = true;
checkboxFour = true;
我还有4个功能:
userFuncOne() {...}
userFuncTwo() {...}
userFuncThree() {...}
userFuncFour() {...}
如果两个或多个复选框为true,我希望随机触发一个函数,但只有与true
值相关联的函数。因此,在上面的示例中,userFuncOne()
无法触发,但其余部分可以触发,并且其中只有一个会被随机触发。
我如何最有效地做到这一点?显然,我可以做一堆其他的,但这看起来非常低效。
有更好的方法吗?谢谢!
答案 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;