(El código lo he simplificado lo más que he podido)
Código HTML:
<html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="js.js"></script> </head> <body> <table id="MiTabla" onload="crea_tabla()"> <tbody></tbody> </table> </body> </html>
Código Javascript:
Ver original
function crea_tabla(){ var n=5;//filas var n2=4;//columnas var tblBody = document.getElementById("MiTabla").getElementsByTagName("tbody")[0]; for (var f=0;f<n;f++) { var fila = document.createElement("tr"); for (var c=0;c<n2;c++) { var celda = document.createElement("td"); var textoCelda; textoCelda = document.createTextNode("Texto de ejemplo (en la versión final varía según la celda, en función de condiciones y demás)"); //trozo problemático de código celda.addEventListener("click",function(){celda_click(celda.textContent);},false); //resto de código celda.appendChild(textoCelda); fila.appendChild(celda); } tblBody.appendChild(fila); } } function celda_click(str){ alert("Evento"+str); }
Creo una tabla dinámicamente e intento obtener su contenido al hacer click, creando un evento que llama a celda_click en cada celda.
El evento se lanza pero no consigo que se envíe como parámetro el contenido de la celda, el texto. Si hago:
Código Javascript:
Puedo comprobar que el "Texto de prueba" sí se manda ya que al hacer click se muestra la alerta "EventoTexto de prueba".Ver original
celda.addEventListener("click",function(){celda_click("Texto de prueba");},false);
Incluso si antes de crear el eventListener ejecuto un "alert(celda.textContent)" me muestra bien el dato, algo se me escapa ya que no entiendo por qué al hacer click no funciona.
Si alguién tiene algo que me pueda ayudar, aunque sea otra forma de hacer lo que busco... pues se lo agradezco