通过名称在JavaScript中调用函数?

时间:2009-05-28 16:31:15

标签: 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) {
    $("#"+button).hide();
        $("#"+form).show();
        callback();
}

6 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

试试这个:

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>

答案 2 :(得分:0)

将您的标记更改为:

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

请注意onclick处理程序和onclick中的return false;

答案 3 :(得分:0)

function showForm(button,form,callbackName) {
    $("#"+button).hide();
    $("#"+form).show();
    var callback = window.callbackName;
    if(typeof callback === 'function') {
        callback();
    }
}

答案 4 :(得分:0)

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

的Javascript

function showForm(button,form,callback) {
  // Your Code
}

function callFunction(){
  document.getElementById('addBookButton').onclick();
}

答案 5 :(得分:-1)

一个选项是将函数传递给引用而不是字符串,所以:

... javascript:showForm('addBookButton','add-book', activateAddBookForm); ....

或继续使用字符串:

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