2011-03-24 13 views
1

我創建了一個練習程序,從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的其餘部分。我只是做了一些編輯,然後創建一個菜單,然後從菜單中選項卡。

so ...我輸入fname();其中fname保存所謂的我的函數名稱的值。但每次我運行我的程序時,錯誤消息顯示「fname不是函數」。任何人都可以知道如何做到這一點嗎?請....

還有一件事,是否有人知道如何把我的動態選項卡中的一些HTML代碼。或者裏面有一個.html頁面?感謝您的閱讀

回答

3

您可以使用其他功能來調用必要的功能。像:

loader(fname); 

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

你的其他選擇可能是存儲在一個對象的功能:

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

,然後即可輕鬆調用他們喜歡:

myFunctions[fname]; 

這些都不是完整的解決方案,只是你可以遵循的一些準則。與eval相比,它的優勢在於,通過這些解決方案,不會發生您無意運行的功能可能運行的情況。只有預定義的可以被調用。

+0

@ bazmegakapa,謝謝你。這工作。我只需要學習更多關於如何使用更多參數(如果可能的話)來做到這一點。順便說一下,在開關內部放置一個功能可以嗎?感謝很多bazmegakapa – jayAnn 2011-03-25 02:34:31

+0

功能裏面的一個開關,已解決。現在是如何添加我的jqgrid從我的動態選項卡,在另一個HTML文件中的HTML文件...嗯.. – jayAnn 2011-03-25 02:59:42

+0

你總是可以自由地問你的下一個問題;) – kapa 2011-03-25 07:22:55

相關問題