Javascript 关于eval()函数的帮助
我需要有关此Javascript 关于eval()函数的帮助,javascript,function,checkbox,eval,Javascript,Function,Checkbox,Eval,我需要有关此eval()问题的帮助: var ScoreFuncName = 'scoreCondition_' + criteriaName; var allCheckBox = $('div#'+SubListId).find("input:image[name^='" + ChkBoxPrefix + "'][value='1']"); eval(ScoreFuncName + '(' + allCheckBox.length + ')'); eval()函数正在评估勾选哪个复选框,
eval()
问题的帮助:
var ScoreFuncName = 'scoreCondition_' + criteriaName;
var allCheckBox = $('div#'+SubListId).find("input:image[name^='" + ChkBoxPrefix + "'][value='1']");
eval(ScoreFuncName + '(' + allCheckBox.length + ')');
eval()
函数正在评估勾选哪个复选框,并将相应地执行其他操作,它在Firefox中工作得很好,但在google Chrome和IE中却没有
我绞尽脑汁想了三天怎么解决这个问题。谢谢。您不应该为此使用eval 如果函数在全局范围内。你需要做的就是
window[ScoreFuncName](allCheckBox.length);
最好将其命名为空格,而不是使用全局with窗口,这样做不需要Eval。还要注意,我在jQuery对象上调用的是
size
,而不是length
var scoreFunc = this['scoreCondition_' + criteriaName];
var allCheckBox =
$('div#'+SubListId).find("input:image[name^='" + ChkBoxPrefix + "'][value='1']");
scoreFunc(allCheckBox.size());
嗯。。。不要
实际上,在这种情况下不需要使用eval(我想说的是,不需要对函数进行字符串查找)。因为很明显,你有一个有限的已知数量的条件和一个有限的已知数量的函数,那么你可以简单地使用一个开关来动态地选择一个函数:
var toRun; // variable to store the function.
switch(criteriaName)
{
case "criteria1":
// keep the actual function in the variable, not some string.
toRun = function(e){console.log("I is so special! " + e)}
break;
case "criteria2":
toRun = function(e){console.log( e + " is not a squid!" )}
break;
}
var allCheckBox = $('div#'+SubListId).find("input:image[name^='" +
ChkBoxPrefix + "'][value='1']");
// then just call it!
toRun(allCheckBox.length)
你能再多看一点代码吗?为什么必须使用eval?为什么选择器在图像标记上查找“value=1”?这不是eval的正确用法。我假设
ScoreFuncName
是一个分配了其他地方定义的函数名的变量?你给我看看这个函数的代码怎么样?然后,删除eval()代码>