Javascript-将函数作为参数传递
抱歉,我找不到一个有效的解决方案,尽管有人问了和回答了类似的问题 我有一个使用OpenModel()打开的模式,在右上角有一个关闭按钮。单击“关闭”时,我希望函数根据已传递的参数运行Javascript-将函数作为参数传递,javascript,function,arguments,Javascript,Function,Arguments,抱歉,我找不到一个有效的解决方案,尽管有人问了和回答了类似的问题 我有一个使用OpenModel()打开的模式,在右上角有一个关闭按钮。单击“关闭”时,我希望函数根据已传递的参数运行 function openModal(onclose){ //insert modal var modal = document.createElement('div'); body.appendChild(modal); //insert close button var
function openModal(onclose){
//insert modal
var modal = document.createElement('div');
body.appendChild(modal);
//insert close button
var modalClose = document.createElement('span');
modalClose.innerHTML = 'Χ'
modalClose.classList.add('modalClose');
modal.appendChild(modalClose);
//call default function on click of close button
modalClose.addEventListener("click", closeModal);
//call custom function on click of close button
if(beforeclose !== undefined){
modalClose.addEventListener("click", onclose);
}
然后我会调用类似OpenModel('refreshPage()')的东西,其中refreshPage只需单击关闭按钮即可运行
感谢您能为我提供的任何帮助-我应该说我曾尝试在addeventlistener中使用eval,它只是立即运行它,然后在单击按钮时也运行它。Do
element.addeventlistener(onclose,function(){closeModal(refreshPage);})代码>
然后您可以像这样设计closeModal
函数:
function closeModal(func){
func();
}
函数引用的形式为变量,不带()
:
函数foo()
通过foo
函数getData()
通过getData
功能条();const barr=bar
通过bar
或barr
为什么参数中是onclose
,而后面是onclose
?JS区分大小写。嗯。。。在OpenModel('refreshPage()')
中,'refreshPage()'
是一个字符串,而不是一个函数,如果删除引号,它将立即调用该函数,因为@raina77ow出现了()
,这只是一个错误,为了清晰起见,我修改了我的实际代码——我想这不太好用。然后遵循@KevinB advice——将函数作为函数传递,而不是作为字符串传递。