Как передать параметр динамически установленной функции Javascript?

Хорошо, у меня есть один Javascript, который создает строки в таблице следующим образом:

  function AddRow(text,rowID) 
  {
    var tbl = document.getElementById('tblNotePanel');
    var row = tbl.insertRow(tbl.rows.length);

    var cell = row.insertCell();
    var textNode = document.createTextNode(text);
    cell.id = rowID;
    cell.style.backgroundColor = "gold";

    cell.onclick = clickTest;

    cell.appendChild(textNode);
  }

В приведенной выше функции я установил функцию "onclick" ячейки для вызова другой функции Javascript под названием "clickTest". Мой вопрос: когда я назначаю событие "onclick" для вызова "clickTest", как мне настроить передачу информации о параметрах, когда метод "clickTest" вызывается в событии "onclick" ячейки? Или, как мне получить доступ к идентификатору ячейки в функции "clickTest"?

Спасибо, Джефф

Ответ 1

Попробуйте следующее:

cell.onclick = function() { clickTest(rowID); };

Идея состоит в том, что вы привязываете обработчик onclick к анонимной функции. Анонимная функция вызывает clickTest с rowID в качестве параметра.

Ответ 2

В функции clickTest вы должны иметь доступ к переменной this. Попробуйте это внутри функции clickTest:

alert(this.id);

Это будет ссылка на элемент DOM, который запустил событие.

В принципе, на самом деле нет способа передать параметры функции обработчика событий. Причина этого в том, что браузер выполняет функцию, основанную на событии, и вы фактически не вызываете функцию.

Вы можете использовать блокировки, позволяющие вам обращаться к локальным переменным (к закрытию) при назначении функции обработчика событий. Это будет выглядеть так:

cell.onclick = function() { alert(this.id); alert(cell.id); };

Если cell.id - это локально ограниченная переменная, которая по-прежнему рассматривается в области действия при выполнении обработчика события.