我创建了一个从 json 创建动态菜单的练习程序。然后,每次我单击该动态菜单时,都会出现一个选项卡,其名称取决于您正在单击的选项卡的名称。
我现在想要的是,我仍在弄清楚,每次我单击菜单时,它都会调用一个与我单击的菜单同名的函数。但我只是不知道该怎么做.我的 js 函数是一个单独的文件。这是代码:
....
$('.menu').click(function () {
dyna_tabs.add('Tab' + $(this).attr("rel"), //this is for the <a href= "-">
$(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();
});
....
您可以找到其余的动态标签代码 here .我只是做了一些编辑,创建一个菜单,然后从菜单中选择标签。
所以...我键入 fname();
其中 fname 保存假定我的函数名称的值。但每次我运行我的程序时,都会出现一条错误消息,显示“fname 不是一个函数”。这里有人知道怎么做吗?请....
还有一件事,有人知道如何将一些 html 代码放入我的动态选项卡中吗?或其中的 .html 页面?感谢阅读
最佳答案
您可以使用另一个函数来调用必要的函数。喜欢:
loader(fname);
function loader(s) {
switch(s) {
case 'xy': xy(); break;
...
}
}
您的另一个选择可能是将您的函数存储在一个对象中:
var myFunctions={
'xy' : function () {
//do something here
},
...
};
然后你可以像这样轻松地调用它们:
myFunctions[fname];
这些不是完整的解决方案,只是您可以遵循的一些准则。与 eval 相比的优势在于,使用这些解决方案,您不打算运行的函数不会运行。只能调用预定义的。
关于javascript - 我怎样才能使变量的值成为函数名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417621/