
Internet Explorer
IE problemática tbody y innerHTML.
Bueno para variar, más problemas con Internet Explorer, si hace poco os comentábamos la problemática de crear una tabla con DOM en IE sin poner la etiqueta tbody después de la table. Hoy vamos a ver una solución al intento de hacer un tbody.innerHTML que para variar no funciona en IE.
Si suponemos que tenemos una tabla del estilo:
| 1 |
| 2 |
| 3 |
| 4 |
Lo normal sería vaciarla del siguiente modo:
document.getElementById('miTBody').innerHTML = '';
Pero en la practica Explorer deja de funcionar… Si, no devuelve ningún tipo de error pero el script se detiene en este punto evitando que se continúe la ejecución del mismo.
La única solución valida que he encontrado es la siguiente:
var taula = document.getELementById("miTBody").parentNode;
taula.removeChild(document.getELementById("miTBody"));
var tbody = document.createElement('tbody');
tbody.id = "miTBody";
taula.appendChild(tbody);
Con esto borramos el elemento tbody de la tabla que lo contiene, y a continuación volvemos a crear un elemento con el mismo identificador.
Entiendo que esta solución no es ni elegante ni eficiente, pero después de romperme la cabeza un buen rato es la única que he encontrado. Si conocéis alguna otra solución dejadla en los comentarios…
yo tuve un problema parecido con una tabla
tenia esto:
tbody = document.getElementById(“trelacion”);
var trow = crear(‘tr’); // crear es una funcion mia
tcol.innerHTML=cam_descripcion;
trow.appendChild(tcol);
tbody.appendChild(trow);
y en el IE no me funcionaba, y busque en varias partes y nada, pero simplemente ala linea donde esta el getELementById
le puse un VAR y listo
var tbody = document.getElementById(“trelacion”);
var trow = crear(‘tr’); // crear es una funcion mia
tcol.innerHTML=cam_descripcion;
trow.appendChild(tcol);
tbody.appendChild(trow);
ya sirve
Es la pena de Javascript, que tiene muchisimas posiblidades, pero que probablemente ni sus creadores conocen todos los bugs o particularidades de cada navegador.
Hola tambien para poder borrar
en lugar de usar var tbody =
document.getElementById(“trelacion”);
tbody.innerHTML=”;
uso esto, y da el mismo resultado
document.getElementById(“trelacion”);
var ttr = tbody.getElementsByTagName(‘tr’)
for(i=ttr.length-1;ttr.length > 0;i–)
ttr[i].parentNode.removeChild(ttr[i]);