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()