2009-08-03 3 views
2

일부 유효성 검사, 일부 텍스트 상자 및 라디오 버튼 그룹 활성화 및 비활성화를 담당하는 함수가 있습니다. ...많은 함수를 만들기 위해 함수 이름에 숫자를 추가하는 방법은 무엇입니까?

이제는 다른 함수에서 호출 할 함수 이름을 생성하려고합니다. 다음 .... 문제의 함수 루프 인덱스에 대해이 같은

뭔가 ..... 여기

function unCheckRadio(num) 
{ 
    var cont = num; 
    var form = document.angular; 

    for (var i = 0; i < cont; i++) 
    { 
    alert(form['lim_set'+i].length); 
    for(var j = 0; j < form['lim_set'+i].length; j++) 
    { 
     form['lim_set'+i][j].checked = form['lim_set'+i][j].defaultChecked; 
    } 
    makeChoice_ang(); 
    } 

} 

을을 추가 루프와 나는)합니다 (makeChoice_ang에 인덱스 I를 추가 할 기능 ....

여러 가지 시도 .... ....하지만 안돼 ...

나는 이것을 사용 해보았 다. 'makeChoice_ang'+ i;

하지만이 ....

나 좀 도와 얻거나, 올바른 방향으로 날 지점하시기 바랍니다 .... 그것에게 문자열

미리 감사드립니다 백만을하고있다!

답변

5

다른 답변이기 때문에이 내용을 추가하고 있습니다.

window['makeChoice_ang' + i](); 

이 ... 평가는 기억 : 당신이 그와 같은 접미사를 부여 (당신이 알고 또는 함수의 범위) 전역 함수를 호출 할 경우

, 당신은 단지 배열 표기법을 사용할 수 있습니다 악한 mostly

+0

감사합니다 힙이 별 .... 매력처럼 작동 ... 다른 모든 덕분에 너무 ... 나는이 수정 프로그램에 왜 내가 배열을 사용할 수 없습니다 ... 나는 언급 했어야 ... 오버플로 스택에 감사드립니다. – chinmay

1

나는 당신이 뭘하려는 건지 제대로 이해하고 :

eval('makeChoice_ang'+i+'()'); 

이 그 문자열 연결에 의해 생성 된 함수를 호출합니다. i = 5 인 경우 makeChoice_ang5()을 호출합니다.

3

인덱스를 매개 변수로 허용하는 일반 함수로 makeChoice_ang()을 다시 쓰는 것이 더 쉬운 것처럼 보입니다. 또는 함수를 변경할 수 없거나 함수가 함수마다 크게 다를 경우 eval()을 사용하여 문자열을 평가할 수 있습니다.

0

자바 스크립트에서 함수는 문자열이나 int처럼 일반 변수로 처리됩니다. 분명히 몇 가지 추가 기능이 있지만 분명히 같은 방법으로 사용할 수 있습니다. 예를 들어 배열에 여러 함수를 저장하거나 다른 함수에 함수를 전달할 수 있습니다. 그 점을 감안할 때, 나는 당신이하는 것처럼 보이는 방식으로 함수를 명명 할 필요가 없음을 알 수 없다.

귀하의 특정 문제에 대해 도움을 드릴 수 있기를 바랍니다. 그러나 이해하기 조금 어렵습니다.

당신은 그것을 매개 변수로 함수 소요 있도록 unCheckRadio 기능을 변경 시도 할 수 : 넣어 객체를 확인

function unCheckRadio(5, function() { 
    // do whatever here. 
}); 
2

:

function unCheckRadio(num, func) { ... } 

을 한 다음과 같이 호출 것 귀하의 기능을 각각의 'makeChoice_ang'+ i 함수에 대해이 객체에서 메소드를 만듭니다. 그런 다음 해당 객체를 통해 이러한 함수를 호출 할 수 있습니다.

var f = { 
    makeChoice_ang1: function(){ 
     alert('1'); 
    }, 
    makeChoice_ang2: function(){ 
     alert('2'); 
    } 
} 

for(var i = 1; i < 3;i++) 
    f['makeChoice_ang' + i](); 
+0

배열은 아마 더 쉬울 것입니다 – nickf

+0

예 나는 다른 답변을 읽은 후에 그것을 깨달았습니다. 여기서 장점은 (비록 장점이라하더라도) 함수에 대한 이름을 가지고 있다는 것입니다. – Michael

관련 문제