如何调用在另一个函数中作为参数传递的函数
这里我调用的函数onclick我将fucntion名称作为参数
onclick="calldialogbox('thisisfortest')"
这是调用onclick的功能
function calldialogbox(funtion_name){
var dialog = $('<p>Are you sure?</p>').dialog({
buttons: {
"Yes": function(){
dialog.dialog('close');
funtion_name(); //here i am calling function
},
"Cancel": function() {
dialog.dialog('close');
}
}
});
}
这是我要调用的功能
function thisisfortest(){
alert("thisisfortest");
}
答案 0 :(得分:0)
简单地传递没有引号的功能。这称为回调。在javascript函数中是第一类对象,因此您可以像普通变量一样传递它们。
PS。尝试使用addEventListener而不是html onclick属性。
答案 1 :(得分:0)
如果将函数名称作为参数传递 - 请使用以下解决方法(处理'global'函数):
...
"Yes": function(){
dialog.dialog('close');
window[funtion_name](); //here I'm calling function <----
},
...
答案 2 :(得分:0)
而不是仅仅考虑function_name
只考虑function
intead - 你没有将函数的名称作为字符串传递给实际的参考函数本身。
onclick="calldialogbox(thisisfortest)"
你可以这样做,因为JavaScript中的函数是&#34;第一类对象&#34;并且可以分配给变量,作为参数传递给其他函数(也称为回调),也可以从函数返回。
就JS最佳实践而言,解决此问题的最佳方法是使用事件侦听器分离内联JS。像这样:
HTML
<div id="clickable">Click me</div>
JS
var div = document.getElementById('clickable');
div.addEventListener('click', calldialogbox(thisisfortest), false);
这样,您就不需要HTML中的onclick
事件。
(实际上,因为calldialogbox
不是异步函数,所以在这个例子中根本不需要传递回调。)
答案 3 :(得分:-1)
试试这个。
in html
<a onclick="calldialogbox(thisisfortest)">Click Me</a>
<强> JS 强>
function calldialogbox(funtion_name){
var dialog = $('<p>Are you sure?</p>').dialog({
buttons: {
"Yes": function(){
dialog.dialog('close');
funtion_name(); //here i am calling function
},
"Cancel": function() {
dialog.dialog('close');
}
}
});
}
function thisisfortest(){
alert("thisisfortest");
}