Ver Mensaje Individual
  #17 (permalink)  
Antiguo 05/12/2010, 14:48
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problemas con DOM en IE

@enrique, @josepepe:

la solución puede ser bien versátil dependiendo de la estructrua de la tabla. lamentablemente no hay forma en iexplorer (con excepción de la 9 según nos comenta @caricatos) que se pueda usar innerHTML en los elementos antes indicados: TBODY, THEAD, TFOOT, TABLE, TR. lo que si puedes hacer es crear una tabla desde su más profunda entrañas. es decir, desde un contendor creas la tabla.
Código:
// html ;
<div id="container"></div>

// javascript ;
document.getElementById('container').innerHTML = "<table><tr><td>cell</td></tr></table>";
por supuesto, esta alternativa no es cómoda si lo que se intenta es modificar una celda o fila. la otra alternativa es acceder con DOM a cada una de las celdas necesarias. la ruta del DOM varia dependiendo de la estructura de la tabla. es decir, si existe la presencia de TFOOT, THEAD, o más de un TBODY.
Código:
// asumiendo que table es la referencia a una tabla ;
table.rows[0].cells[0]; 
/* primera celda de primera fila. la fila a presentar en rows[0]
   no se toma en cuenta si la seccion es THEAD, TBODY ni TFOOT.
   es decir, es en relacion en orden de aparicion referente 
   al elemento TABLE.
*/

table.tBodies[0].rows[0].cells[0];
// primera celda de la primera fila en relacion al primer TBODY de la tabla ;

table.tHead.rows[0].cells[0]; 
// primera celda de la primera fila en relacion a THEAD ;
@enrique, con la alternativa de item o childNodes hay que tener mucho cuidado puesto que los TextNode tambien son nodos. sin embargo, en iexplorer el asunto es un tanto distinto, el navegador no crea TextNode cuando este consiste de caracteres en blanco (white-character: space, linefeed, new line, entre otros).
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.