2009-05-28 102 views
0

我想接下來的代碼沒有成功用JavaScript調用函數的名字?

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

回答

5

您可以將函數的引用傳遞給showForm函數。

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

將您的標籤更改爲:

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

請注意onclick處理程序以及onclick中的return false;

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

一種選擇是,而不是通過功能是參考作爲字符串,所以:

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

或繼續使用字符串:

function showForm(button,form,callback) { 
    $("#"+button).hide(); 
     $("#"+form).show(); 
     new Function(callback + '();')(); 
} 
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(); 
}