2011-08-10 5 views
0

조치에 해당하는 옵션이있는 선택 (드롭 다운 목록)이 있습니다. 각 액션은 선택을 위해 변경된 이벤트에서 호출되어야하는 일반적인 자바 스크립트 함수에 해당합니다.자바 스크립트에서 전체 함수 문자열 (params 포함)을 계산하는 방법

<select id="id-select-action" class="select-action right" value="Actions"> 
      <option class="select-title">Actions</option> 
      <optgroup label="General Actions"> 
       <option value="load_new_page('/url/to/new/page')">create a foo</option> 
       <option value="load_cbox('/url/to/cbox/contents')">manage tags</option> 
      </optgroup> 
</select> 

동적으로 각 옵션의 값 (작업이 수행하고 표시되는 방법을 내용에 따라 자바 스크립트 함수를 호출이다) 문자열과 서버를 생성하는 내 서버 코드가 동적으로 생성 : 그래서 다음과 같습니다 매개 변수 (보기에 대한 URL).

나는 옵션의 값 문자열에 javascript 함수를 호출하려는 select에 대한 change 이벤트에 jquery 리스너를 가지고 있습니다.

$("#id-select-action").change(function() { 
    function_call = $("#id-select-action option:selected").val(); 
    //How do I execute the function_call? 

}); 

모두가 eval()을 싫어하는 것 같습니다. . . 그러나 이것에 대한 적절한 경우인가, 아니면 내가 다른 것을해야 하는가? 나는이 How to turn a String into a javascript function call?을 보았다. . . 하지만 그 중 하나에서는 매개 변수를 포함하여 전체 함수 호출 문자열이 아니라 처리 할 이름 만 있습니다.

우리가이 방식으로하는 이유는 우리 애플리케이션의 특정 유형의보기에 대한 일반적인 프레임 워크를 만들고 동작이 다를 수 있기 때문입니다 (다른 URL을 가지고 있거나 다른 자바 스크립트 함수를 호출합니다).

감사합니다. 문자열에서 FN을 만들 수

답변

1

내가 도움이 될 것입니다 평가 후면 생각하여 변경 이벤트 FN 이상 사용 조건.

http://www.w3schools.com/jsref/jsref_eval.asp

그러나 평가 사용에 대한주의 및 귀하의 경우는 맞는 경우 조건을 확인하시기 바랍니다.

0

사용이 FN

function createFunctionFromString(fnName, noOfParameters) { 
     var _params = []; 
     for (i = 0; i < noOfParameters; i = i + 1) { 
      _params.push("p" + (i + 1)); 
     } 
     var _fn = fnName ? new Function(_params.toString(","), "return " + fnName + "(" + _params.toString(",") + ");") : null; 
     _params.length = 0; 
     return _fn; 
    } 

// 이제에 ..

var convertedFn=createFunctionFromString($("#id-select-action option:selected").val(),'SomeInteger'); 


convertedFn(); 

http://jsfiddle.net/praveen_prasad/fk8fh/

관련 문제