2008-11-20 23 views
11

Ok, tengo una Javascript que crea filas en una tabla como la siguiente:¿Cómo pasar un parámetro a una función Javascript establecida dinámicamente?

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

En la función anterior me puse función "onclick" de la célula para llamar a otra función Javascript llamada "clickTest". Mi pregunta es: cuando asigno el evento "onclick" para llamar a "clickTest", ¿cómo configuro la información del parámetro que se enviará cuando se llame al método "clickTest" en el evento "onclick" de la célula? O bien, ¿cómo accedo a la identificación de la celda en la función "clickTest"?

Gracias, Jeff

Respuesta

21

Prueba esto:

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

La idea es que va a enlazar el manejador onclick a la función anónima. La función anónima llama a ClickTest con rowID como parámetro.

4

En la función clickTest que deben tener acceso a una variable this. Prueba esto dentro de clickTest función:

alert(this.id); 

Esto se referirá al elemento DOM que generó el evento.

Básicamente, no hay realmente una manera de pasar los parámetros a una función de controlador de eventos. El motivo es que el navegador está ejecutando la función en función de un evento y en realidad no está llamando a la función.

Puede usar cierres que le permiten acceder a las variables locales (al cierre) cuando asigna la función del controlador de eventos. Ese sería el siguiente:

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

Fueron cell.id es la variable que con ámbito local todavía se considera en su alcance cuando se ejecuta el controlador de eventos.

Cuestiones relacionadas