Cita:
Iniciado por MaxDgy Hola @emprear muy interesante lo que dices, pero una sola cosa con el código que propones usar.
Los usuarios que usan WinXP y son fieles al navegador IE8, no les funcionará el código ese y recibirán un mensaje de alerta:
undefined
¿Se puede agregar una compatibilidad con dicho Browser?
Si, efectivamente cometí un error, el problema en si es con el uso de this en attachEvent, que lo puse para simplificar
Podemos hacer esto
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <title>Recuperar datos de celdas en una fila
</title> /*<![CDATA[*/
tr{
background: cyan;
}
/*]]>*/
<script type="text/javascript"> //<![CDATA[
function valor_celda(celda){
alert(celda.innerHTML);
}
window.onload = function(){
var tags_td = new Array();
var tags_td=document.getElementsByTagName('td');
for (i=0; i<tags_td.length; i++) {
if (tags_td[i].addEventListener) { // IE9 y el resto
tags_td[i].addEventListener ("click", function () {valor_celda(this)}, false);
}
else {
if (tags_td[i].attachEvent) { // IE9 -
// tags_td[i].attachEvent ('onclick', function () {valor_celda(this)}, false);
tags_td[i].setAttribute('onclick', 'valor_celda(this)');
}
}
}
}
//]]>
<table border="1" width="50%">
es decir, utilizamos setAttribute, pero aún nos queda fuera IE7.
Otra alternativa, ahora si compatible con IE 6/7/8/9/ y el resto, sería definir el evento en cada elemento
<td onclick="valor_celda(this)">celda 1</td><td onclick="valor_celda(this)">celda 2</td>
Esta ultima posibilidad no sería dificil de implementar en este caso ya que la tabla es dinámica según lo dicho por @neram7
Saludos
PD:
Edito para hacer un agregado, yo hice esto pensando en los <td> como dice el post, me quedé clavado en "esto obtener el valor del td solo con darle click" y no en los <tr> lo que no es exactamente lo mismo
Algo así para las celdas de un misma fila
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <title>Recuperar datos de celdas en una fila
</title> /*<![CDATA[*/
tr{
background: cyan;
}
/*]]>*/
<script type="text/javascript"> //<![CDATA[
function recuperarFila(idfila) {
var elTableRow = document.getElementById(idfila);
elTableRow.style.backgroundColor =(elTableRow.style.backgroundColor=="green")?'cyan':'green';
if(elTableRow.style.backgroundColor == 'green'){
var elTableCells = elTableRow.getElementsByTagName("td");
for (var i=0; i<elTableCells.length; i++) {
alert(elTableCells[i].innerHTML);
}
}
}
function vhtml(){
var divx =document.getElementById('x');
alert(divx.innerHTML);
}
//]]>
<table border="1" width="50%"> <tr id="fila_uno" onclick="recuperarFila(this.id)"> <tr id="fila_dos" onclick="recuperarFila(this.id)"> <tr id="fila_tres" onclick="recuperarFila(this.id)">
se simplifica usando el id de cada fila