簡體   English   中英

如何從變量中創建一個值作為函數名?

[英]how can i make a value from variable be a function name?

我創建了一個練習程序,從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();
    }); 
    ....

您可以在此處找到其余的動態選項卡代碼。 我只是做了一些編輯,從菜單中創建菜單然后選項卡。

所以...我輸入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的優勢在於,使用這些解決方案,您無法運行的功能無法運行。 只能調用預定義的。

我會事先為此道歉。

eval(fname + '()');

應該管用

根據這個問題( 當我將其名稱作為字符串時如何執行JavaScript函數 )有一些更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM