2008-11-20 4 views
11

Хорошо, у меня есть один 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»?

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

ответ

21

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

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

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

4

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

alert(this.id); 

Это будет относиться к элементу DOM, который уволил событие.

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

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

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

Были cell.id является локально областью видимости, которая до сих пор считается в объеме, когда обработчик события выполняется.

Смежные вопросы