如何调用在另一个函数中作为参数传递的函数

时间:2016-04-16 20:35:55

标签: javascript jquery

如何调用在另一个函数中作为参数传递的函数

这里我调用的函数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");
}

4 个答案:

答案 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事件。

DEMO

(实际上,因为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");
}