2011-03-24 4 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의 나머지 부분을 찾을 수 있습니다. 방금 메뉴에서 메뉴를 만들고 탭에서 편집을 수행했습니다.

그래서 ... 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

+0

스위치 내부 기능, 해냈어. 이제 내 동적 탭 내 html 파일의 jqgrid를 다른 html 파일에 추가하는 방법입니다 ... 흠 .. – jayAnn

+0

당신은 항상 다음 질문을 물어볼 수 있습니다;) – kapa

관련 문제