7

だから私はこのメソッドを呼び出そうとしています:

refreshMoradaLabel = function(idPlaceHolder) {...};

window オブジェクトの場合:

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

しかし、これはうまくいかないようです。メソッドにパラメーターがない場合のみです。window [ variable ] ()構文を使用して作業する方法はありますか?

編集;

ここにコードがあります:

moarada.jsp には、次のメソッドを含むコードがあります。

<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 = function(idPlaceHolder) {

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

};

window.editMoradaPopup= function(idPlaceHolder,method){ アラート(idPlaceHolder); Ext.onReady(function(){ action = "${pageContext.request.contextPath}/moradaPopupLocaleAware.do2"; action += "?method=edit&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);
    });

};

メソッド ExtWindowAll は、最終的に別の js ファイルからコードを呼び出します。その結果、ウィンドウを閉じるイベントが呼び出され、可能なパラメーターを含むメソッド名 (refreshMoaraLabel) の文字列が使用されます。

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

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

2 に答える 2