Javascript向传递的回调变量添加回调函数

Javascript向传递的回调变量添加回调函数,javascript,Javascript,我创建了一个确认对话框函数,它接受一个当用户单击“接受”时会触发的函数 现在我想向这个传递的函数添加一个回调,这样我就可以呈现某种加载程序,让用户知道系统正在处理响应 以下是迄今为止的代码 confirmDialog('Confirm deletation','you sure you want to delete the internet?',function(){alert('test');}); 函数closeConfirmDialog(){ var dialog=document.ge

我创建了一个确认对话框函数,它接受一个当用户单击“接受”时会触发的函数

现在我想向这个传递的函数添加一个回调,这样我就可以呈现某种加载程序,让用户知道系统正在处理响应

以下是迄今为止的代码

confirmDialog('Confirm deletation','you sure you want to delete the internet?',function(){alert('test');});
函数closeConfirmDialog(){
var dialog=document.getElementById('confirmDialog');
var overlay=document.getElementById('dialogOverlay');
if(dialog){document.getElementsByTagName('BODY')[0].removeChild(dialog);}
if(overlay){document.getElementsByTagName('BODY')[0].removeChild(overlay);}
}
函数confirmDialog(标题、消息、confirmCallback){
//关闭任何活动的confirmDialog
closeConfirmDialog();
//为对话框创建所有必需的元素
var dialogOverlay=document.createElement('div');
var dialogBox=document.createElement('div');
var buttonBox=document.createElement('div');
var titleBox=document.createElement('div');
var textBox=document.createElement('div');
var cancelButton=document.createElement('a');
var successButton=document.createElement('a');
//向元素添加类/内容
setAttribute('id','dialogOverlay');
dialogOverlay.onclick=函数(){closeConfirmDialog();};
setAttribute('id','confirmDialog');
buttonBox.className='buttonBox';
titleBox.className='titleBox';
titleBox.innerHTML=标题;
textBox.className='textBox';
textBox.innerHTML=消息;
cancelButton.className='dangerbtn left';
cancelButton.innerHTML='Cancel';
cancelButton.onclick=函数(){closeConfirmDialog();};
successButton.className='successbtn right';
successButton.innerHTML='Confirm';
/**
*这就是我想修改confirmCallback函数以始终显示加载程序的地方。
*/
//在这里,我将回调设置为successButton onclick事件。
successButton.onclick=confirmCallback;
//将所有元素添加到各自的包装中
buttonBox.appendChild(取消按钮);
buttonBox.appendChild(successButton);
dialogBox.appendChild(标题框);
dialogBox.appendChild(文本框);
dialogBox.appendChild(按钮盒);
//将覆盖层和完成的confirmbox附加到主体。
document.getElementsByTagName('BODY')[0].appendChild(对话框);
document.getElementsByTagName('BODY')[0].appendChild(dialogOverlay);
返回false;
}
正文{
字体系列:arial;
}
#确认对话框{
位置:绝对位置;
排名前10%;
左:25%;
宽度:50%;
边框:1px实心#000;
填充:10px 10px 0 10px;
框大小:边框框;
}
#confirmDialog>.titleBox{
字体大小:粗体;
字体大小:16px;
利润底部:4倍;
}
#确认对话框>.textBox{
利润底部:4倍;
}
#confirmDialog>.buttonBox{
边框顶部:1px实心#000;
填充物:5px10px;
利润率:0-10px;
浮动:左;
宽度:100%;
}
#确认对话框>.buttonBox>.dangerbtn{
背景色:#d9534f;
边框颜色:#d9534f;
颜色:#fff;
填充:4px12px;
浮动:左;
光标:指针;
}
#确认对话框>.buttonBox>.successbtn{
背景色:#5cb85c;
边框颜色:#5cb85c;
颜色:#fff;
填充:4px12px;
浮动:对;
光标:指针;

}
如果您只想显示一个加载器(并且传递的回调中没有任何内容应该关心它),请更改此行
successButton.onclick=confirmCallback至:

successButton.onclick = function() {
  confirmCallback();
  showLoader();
}
但如果您想将一些数据传递到回调函数中(如果您想在回调函数中包含一些逻辑,它可能是一个showLoader函数),只需将其传递到回调函数中,如下所示:

successButton.onclick = function() {
  confirmCallback(showLoader);
}

但别忘了在回电话时打电话

你能展示一下你将如何调用
confirmDialog
;confirmDialog('Confirm deletation','您确定要删除internet吗?',function(){alert('test');});因此,与其每次在项目中调用加载程序时编写所需的内容(显示加载程序等),不如将其添加到事件处理程序中:
successButton.onclick=function(){loader();setTimeout(confirmCallback,1)}
Ah,yes。我完全忘了在confirmCallback变量中添加括号。。。马上接受回答。谢谢