抱歉,标题太乱了,让我尝试使其更容易...
假设复选框为每个复选框返回以下内容:
checkboxOne = false;
checkboxTwo = true;
checkboxThree = true;
checkboxFour = true;
我也有4个功能:
userFuncOne() {...}
userFuncTwo() {...}
userFuncThree() {...}
userFuncFour() {...}
如果两个或两个以上的复选框为true,则我希望随机触发其中一个函数,但仅触发与某个true
值关联的函数。因此,在上面的示例中,userFuncOne()
无法触发,但是其余的可以触发,并且其中只有一个是随机触发的。
我将如何最有效地做到这一点?显然,我可以做很多if和else的事情,但这似乎效率很低。
有没有更好的办法?谢谢!
这是我评论中的一个示例片段,也许您在追求什么?您可能想要对其进行调整,这只是概念的证明:)
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" />
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句