javascript - 我怎样才能使变量的值成为函数名?

标签 javascript jquery function variables

我创建了一个从 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/

相关文章:

javascript - 单击按钮和鼠标离开后,Bootstrap 的工具提示不会消失

javascript - 使用数据表插件进行无重音搜索

javascript - 如何制作带有文件字段的隐藏表单

php - 调用未定义函数 testinput() 第 48 行

javascript - 在客户端缓存 JSON 数组

javascript - 后台任务和正在运行的应用程序检测

python - 在闭包的情况下,为什么要使用两个括号?

c - 如何将循环的值连接到变量中以在 C 中返回

javascript - 每个 JavaScript 程序员都应该知道什么?

javascript - 剑道模板发送数据