Javascript:将函数作为参数传递,该参数将在onclick事件中执行

Javascript:将函数作为参数传递,该参数将在onclick事件中执行,javascript,jquery,html,Javascript,Jquery,Html,我想创建一个确认框,它基于这样一个想法:当单击按钮时,会附加一个div 它的OK按钮执行作为参数给定的函数。如果函数名不是一个变量,我就可以做到这一点,但在这种情况下,我需要的确认框与我拥有的函数类型一样多 下面是html按钮: 显示 以下是确认框功能: function execAfterConfirmed( functionToExecute , arg ){ $("body").prepend("<div id='createdConfirmDiv' ><img

我想创建一个确认框,它基于这样一个想法:当单击按钮时,会附加一个div 它的OK按钮执行作为参数给定的函数。如果函数名不是一个变量,我就可以做到这一点,但在这种情况下,我需要的确认框与我拥有的函数类型一样多

下面是html按钮:

显示

以下是确认框功能:

function execAfterConfirmed( functionToExecute , arg ){
    $("body").prepend("<div id='createdConfirmDiv' ><img id='closeImg' src='close.png' height=30 onclick='$(\"div#createdConfirmDiv\").remove()'>CONFIRM ?<br><button class='myConfirmButton'   id='yesButton' onclick='$(\"div#createdConfirmDiv\").remove();" + functionToExecute + "("+arg+")'>YES</button><button class='myConfirmButton' onclick='$(\"div#createdConfirmDiv\").remove()'>NO</button></div>");
确认后执行函数(functionToExecute,arg){
$(“正文”)。前置(“确认?
YESNO”);
}


然而,我得到了意想不到的令牌(

我希望我确实理解了您的问题,正如您试图描述的那样。以下是一个解决方案:

function confirmBox(button, message, func) {
    button.addEventListener('click', function(){
       var re = confirm(message);

       if (re) func();
    })    
}

confirmBox( document.getElementById('button'),
            "You clicked because you liked me.",
            function(){
                // do stuff
            });

只需以编程方式添加处理程序

函数myFunc(){
警报(“myFunc!”);
}
确认后执行函数(functionToExecute,arg){
var$show=$(“#显示按钮”).hide();
$(“body”).prepend(“测试对话框
OK”); $(#CreatedConfigrDiv按钮)。一个(“单击”,函数(e){ 功能执行(arg); $(“#createdConfirmDiv”).remove(); $show.show(); }); }

显示
CSS

HTML


我键入的函数声明错误,其名称为executeafterconfirm。问题仍然存在。
executeafterconfirm('myFunc');
??仅供参考,ID在文档上下文中必须是唯一的“myFunc”是如何定义的?函数myFunc(myNr){if(myNr)$.post(“test.php”,{nr:myNr},函数(请求){$($)。next().next().remove();$(“输入”).next().after(“+request+”;});else showMyAlert(“输入中无内容”);}@Catgocat,因为问题被标记为jQuery,OP的代码使用jQuery。在多次单击“显示”然后单击“确定”之后,似乎该函数正在为一个按钮单击执行多次。@AlexW这是一个简化的示例,演示如何以编程方式绑定处理程序。他的实际代码是(大概是)要删除生成的div。非常感谢,我尝试过,效果很好,正如我所希望的。是的,单击“是”或“否”将删除确认框非常感谢,这很完美。但我想使用我自己的确认框,而不是javascript的官方确认框。
.createdConfirmDiv{display(none;}
<body>
<div id='createdConfirmDiv' >
<img id='closeImg' src='close.png'width="www" height="30" onclick="(remove(0)">CONFIRM?
<br>
<button class='myConfirmButton'   id='yesButton' onclick=("remove(1)");>YES
</button>
<button class='myConfirmButton' onclick=("remove(2)";)>NO
</button>
</div>
myFunc function(f,a){
document.getElementById('createdConfirmDiv').sytle.display='block');



}


remove function(r){
document.getElementById('createdConfirmDiv').sytle.display='none');
if (r==0){

}
if (r==1){

}