javascript在window对象上调用带有参数的函数

Max*_*ner 5 javascript window

所以我试图调用这个方法:

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

使用窗口对象:

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>
Run Code Online (Sandbox Code Playgroud)

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)});
    }

};
Run Code Online (Sandbox Code Playgroud)

window.editMoradaPopup= function(idPlaceHolder,method){ alert(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);
    });

};
Run Code Online (Sandbox Code Playgroud)

方法 ExtWindowAll 最终从另一个 js 文件调用代码,导致调用关闭窗口事件,方法名称的字符串(refreshMoaraLabel)包括可能的参数:

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

        debugger;
        if(window[functionOnClose]) {
            window[functionOnClose](param);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

Ric*_*omi 6

该window对象包含 name 属性refreshMoradaLabel。要访问该属性,我们可以使用点或方括号表示法:

window.refreshMoradaLabel或者window['refreshMoradaLabel']

该属性的值是一个函数。要调用它,我们添加括号:window.refreshMoradaLabel('id')或window['refreshMoradaLabel']('id')。


PSL*_*PSL 5

试试这个方法:-

窗口上下文需要将函数名称作为字符串。

 window ["refreshMoradaLabel"]();

  window ["refreshMoradaLabel"]('id');
Run Code Online (Sandbox Code Playgroud)

相反,您尝试在窗口上下文中调用该方法。

窗口 [refreshMoradaLabel('id')](); 当你这样做时,你试图调用其结果refreshMoradaLabel('id')是未定义的。()因为在到达window 的函数调用之前,refreshMoradaLabel('id') 首先被执行。