Вызывать функцию в JavaScript по ее имени? - PullRequest
0 голосов
/ 28 мая 2009

я безуспешно пробовал следующий код

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 ]

5 голосов
/ 28 мая 2009

Вы можете просто передать ссылку на функцию в функцию showForm.

<a id="addBookButton" href="javascript:showForm('addBookButton','add-book',activateAddBookForm);" class="addA"><span>Add Book</span></a>
2 голосов
/ 28 мая 2009

Попробуйте это:

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 голосов
/ 28 мая 2009
<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();
}
0 голосов
/ 28 мая 2009

Один из вариантов - передать функцию как ссылку, а не как строку, поэтому:

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

или продолжить использование строки:

function showForm(button,form,callback) {
    $("#"+button).hide();
        $("#"+form).show();
        new Function(callback + '();')();
}
0 голосов
/ 28 мая 2009
function showForm(button,form,callbackName) {
    $("#"+button).hide();
    $("#"+form).show();
    var callback = window.callbackName;
    if(typeof callback === 'function') {
        callback();
    }
}
0 голосов
/ 28 мая 2009

Измените свой тег на:

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

Обратите внимание на обработчик onclick и return false; внутри клика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...