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

Javascript: Passing a function as argument which will be executed at onclick event

本文关键字:参数 onclick 执行 事件 函数 参数传递 Javascript      更新时间:2023-09-26

我想创建一个确认框,基于单击按钮时附加一个div的想法到正文,其"确定"按钮执行作为参数给出的函数。如果函数名称不是变量,我设法做到了,但在这种情况下,我需要与我拥有的函数类型一样多的确认框。

这是 html 按钮:

<button onclick=" executeAfterConfirmed( myFunc );">SHOW</button>

这是确认框功能:

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

}

但是,我得到了意外令牌(

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

function myFunc() {
  alert("myFunc!");
}
function executeAfterConfirmed(functionToExecute, arg) {  
  var $show = $("#show-button").hide();  
  
  $("body").prepend("<div id='createdConfirmDiv'>Test dialog<br><button>OK</button></div>");
  
  $("#createdConfirmDiv button").one("click", function(e){
    functionToExecute(arg);
    $("#createdConfirmDiv").remove();
    $show.show();
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="show-button" onclick="executeAfterConfirmed(myFunc);">SHOW</button>

我希望

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

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

CSS

.createdConfirmDiv{display(none;}

.HTML

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