如何从变量中创建一个值是一个函数名?

我创建了一个练习程序,从json创建一个动态菜单。 然后,每次单击该动态菜单时,都会出现一个选项卡,其中包含一个选项卡名称,具体取决于您单击的选项卡的名称。

我现在想要的,我还在想,是每次我点击菜单,它会调用一个与我点击的菜单名称相同的function。但我只是不知道该怎么做。 我的js函数是一个单独的文件。 这是代码:

.... $('.menu').click(function () { dyna_tabs.add('Tab' + $(this).attr("rel"), //this is for the  $(this).attr("rel"), //this if for the title $(this).html()); // for the tab_content fname = $(this).html(); // this is my variable name which i plan to use as function name alert('this would be my function name ' + fname); fname(); }); .... 

您可以在此处找到其余的动态选项卡代码。 我只是做了一些编辑,从菜单中创建菜单然后选项卡。

所以…我输入fname(); 其中fname包含所谓的我的函数名称的值。 但每次我运行我的程序时,错误消息显示“fname不是函数”。 这里的任何人都知道如何做到这一点吗? 请….

还有一件事,是否有人知道如何将一些HTML代码放入我的动态标签中。 还是里面的.html页面? 谢谢你的阅读

您可以使用另一个将调用必要function的函数。 喜欢:

 loader(fname); function loader(s) { switch(s) { case 'xy': xy(); break; ... } } 

您的其他选项可能是将您的函数存储在对象中:

 var myFunctions={ 'xy' : function () { //do something here }, ... }; 

然后你可以轻松地称呼它们:

 myFunctions[fname]; 

这些不是完整的解决方案,只是您可以遵循的一些指导原则。 优于eval的优势在于,使用这些解决方案,您无法运行的function无法运行。 只能调用预定义的。

我会事先为此道歉。

 eval(fname + '()'); 

应该管用

根据这个问题( 当我将其名称作为字符串时如何执行JavaScript函数 )有一些更好的选择。