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

时间:2015-01-07 18:59:59

标签: javascript jquery html

我想基于以下想法创建一个确认框:单击按钮时,会附加一个div 到正文,它的OK按钮执行一个作为参数给出的函数。如果函数名不是变量,我设法做到了,但在这种情况下,我需要尽可能多的确认框和我有的许多类型的函数。

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

}

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

3 个答案:

答案 0 :(得分:0)

我希望我确实理解你的问题,正如你想描述的那样。这是一个解决方案:

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

答案 1 :(得分:0)

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

&#13;
&#13;
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();
  });

}
&#13;
<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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

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>

SCRIPT

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

}