Ответ 1
Попробуйте следующее:
cell.onclick = function() { clickTest(rowID); };
Идея состоит в том, что вы привязываете обработчик onclick к анонимной функции. Анонимная функция вызывает clickTest с rowID в качестве параметра.
Хорошо, у меня есть один 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"?
Спасибо, Джефф
Попробуйте следующее:
cell.onclick = function() { clickTest(rowID); };
Идея состоит в том, что вы привязываете обработчик onclick к анонимной функции. Анонимная функция вызывает clickTest с rowID в качестве параметра.
В функции clickTest вы должны иметь доступ к переменной this
. Попробуйте это внутри функции clickTest
:
alert(this.id);
Это будет ссылка на элемент DOM, который запустил событие.
В принципе, на самом деле нет способа передать параметры функции обработчика событий. Причина этого в том, что браузер выполняет функцию, основанную на событии, и вы фактически не вызываете функцию.
Вы можете использовать блокировки, позволяющие вам обращаться к локальным переменным (к закрытию) при назначении функции обработчика событий. Это будет выглядеть так:
cell.onclick = function() { alert(this.id); alert(cell.id); };
Если cell.id
- это локально ограниченная переменная, которая по-прежнему рассматривается в области действия при выполнении обработчика события.