2013-05-03 1 views
0

그래서 나는이 메서드를 호출하기 위해 노력하고있어 :자바 스크립트

refreshMoradaLabel = 기능 (idPlaceHolder) {...}을 (를); 윈도우 개체

:

창 [refreshMoradaLabel ("ID")();

하지만 이것은 작동하지 않습니다. 메서드에 매개 변수가없는 경우에만 해당됩니다. window [ variable ]() 구문을 사용하여 작동하는 방법이 있습니까?

편집;

<c:set var="methodOnClose" value="refreshDynamicValues" /> 
<c:if test="${empty fieldInstance || (not empty fieldInstance && isTramitacao)}"> 
    <c:set var="methodOnClose" value="refreshMoradaLabel(${dfieldId})" /> 
</c:if> 
<a class="texto" href="#" onclick="editMoradaPopup('${dfieldId}','${methodOnClose}');" id="moradas_${dfieldId}"><img alt="${moradaDes}" src="${pageContext.request.contextPath}/images/icon/icon-pesquisa.png"></a> 

window.refreshMoradaLabel = 기능 (idPlaceHolder) {

alert("label:" +idPlaceHolder); 
    if($F(idPlaceHolder) != '') { 
     //Update label 
     new Ajax.Updater(idPlaceHolder+'_label', 'moradaPopupLocaleAware.do2?method=getLabel', 
       {method: 'get', parameters: 'id='+$F(idPlaceHolder)}); 
    } 

}; 
:

moarada.jsp 이러한 방법으로 코드를 가지고 : 여기 확인

코드입니다

window.editMoradaPopup = function (idPlaceH 이전, 메소드) { alert (idPlaceHolder); Ext.onReady (함수() { 조치 = "$ {} pageContext.request.contextPath /moradaPopupLocaleAware.do2", "? = 편집 방법 & ID =" 액션 + = + $ (idPlaceHolder) .value;

 action += "&idPlaceHolder="+idPlaceHolder; 
     action += "&savemorada=true"; 
     action += "&window=winchoose";  
     return ExtWindowAll('${moradaDes}',action,'','html',true,true,true,650,400,true,true,'fit', method); 
    }); 

}; 

결국 결과를 얻을 수 PARAMS하는 단계 이름의 문자열 (refreshMoaraLabel)과 더불어, 창 닫기 이벤트를 호출하는 것으로, 다른 JS 파일에서 코드를 호출 ExtWindowAll 방법 : (

winchoose.on 'close', function (p) { if (funct ionOnClose) {
alert ("method :"+ functionOnClose); var substr = functionOnClose.match (/ ((^)) *)) /); var param = ''; if (substr! = null) { param = substr [1]; param = " '"+ param + "'"; }

 debugger; 
     if(window[functionOnClose]) { 
      window[functionOnClose](param); 
     } 
    } 
}); 

답변

2

이 방법을 시도해보십시오 -

창 컨텍스트 문자열로 함수 이름을 할 필요가있다.

window ["refreshMoradaLabel"](); 

    window ["refreshMoradaLabel"]('id'); 

대신에 윈도우 컨텍스트 내에서 메소드를 호출하려고합니다.

창 [refreshMoradaLabel ('id')](); 이렇게하면 정의되지 않은 refreshMoradaLabel('id')의 결과를 호출하려고합니다. refreshMoradaLabel ('id')가 윈도우의 funciton 호출 ()에 도달하기 전에 먼저 실행되기 때문에

+0

'window [ "refreshMoradaLabel"]();' – PSL

+1

사이에 공백을 두지 마십시오. 답변을 시도해 주셔서 감사합니다. 내일 시험에 나서서 approve.regards로 돌아가십시오. – Maxrunner

+0

Havent는 아직 시도 할 수 없습니다. 희망은 여전히 ​​내일 대답을 선택할 수 있습니다. – Maxrunner

2

window 개체의 이름은 refreshMoradaLabel입니다.

window.refreshMoradaLabel 또는 window['refreshMoradaLabel']

해당 속성의 값은 함수 : 속성을 액세스하려면, 우리는 점이나 대괄호 표기법을 사용할 수 있습니다. 이를 호출하기 위해 괄호 (window.refreshMoradaLabel('id') 또는 window['refreshMoradaLabel']('id'))를 추가합니다.

관련 문제