在JavaScript中按函数名调用函数?

在JavaScript中按函数名调用函数?,javascript,jquery,Javascript,Jquery,我正在尝试下一个代码,但没有成功 HTML <a id="addBookButton" href="javascript:showForm('addBookButton','add-book','activateAddBookForm');" class="addA"><span>Add Book</span></a> Javascript function showForm(button,form,callback) { $("#"

我正在尝试下一个代码,但没有成功

HTML

<a id="addBookButton" href="javascript:showForm('addBookButton','add-book','activateAddBookForm');" class="addA"><span>Add Book</span></a>

Javascript


function showForm(button,form,callback) {
    $("#"+button).hide();
        $("#"+form).show();
        callback();
}

Javascript
函数showForm(按钮、窗体、回调){
$(“#”+按钮).hide();
$(“#”+形式).show();
回调();
}
试试这个:

function showForm(button,form,callback) {
    $("#"+button).hide();
    $("#"+form).show();
    if (typeof this[callback] == "function") this[callback]();
}
当然,您可以按值传递函数,而不仅仅是按函数的名称传递:

<a id="addBookButton" href="javascript:showForm('addBookButton','add-book',activateAddBookForm);" class="addA"><span>Add Book</span></a>
<a id="addBookButton" href="javascript:showForm('addBookButton','add-book',activateAddBookForm);" class="addA"><span>Add Book</span></a>

试试这个:

function showForm(button,form,callback) {
    $("#"+button).hide();
    $("#"+form).show();
    if (typeof this[callback] == "function") this[callback]();
}
当然,您可以按值传递函数,而不仅仅是按函数的名称传递:

<a id="addBookButton" href="javascript:showForm('addBookButton','add-book',activateAddBookForm);" class="addA"><span>Add Book</span></a>
<a id="addBookButton" href="javascript:showForm('addBookButton','add-book',activateAddBookForm);" class="addA"><span>Add Book</span></a>

将a标签更改为:

<a id="addBookButton" href="#" onclick="showForm('addBookButton','add-book','activateAddBookForm'); return false;" class="addA"><span>Add Book</span></a>

注意
onclick
处理程序,并且
返回false在onclick中。

将a标记更改为:

<a id="addBookButton" href="#" onclick="showForm('addBookButton','add-book','activateAddBookForm'); return false;" class="addA"><span>Add Book</span></a>


注意
onclick
处理程序,并且
返回false在onclick中。

您只需将对函数的引用传递到showForm函数中即可


您只需将对该函数的引用传递到showForm函数中即可


一个选项是将函数作为引用而不是字符串传递,因此:

... javascript:showForm('addBookButton','add-book', activateAddBookForm); ....
或继续使用字符串:

function showForm(button,form,callback) {
    $("#"+button).hide();
        $("#"+form).show();
        new Function(callback + '();')();
}

一个选项是将函数作为引用而不是字符串传递,因此:

... javascript:showForm('addBookButton','add-book', activateAddBookForm); ....
或继续使用字符串:

function showForm(button,form,callback) {
    $("#"+button).hide();
        $("#"+form).show();
        new Function(callback + '();')();
}