Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2008, 10:19
LOLoMATS
 
Fecha de Ingreso: enero-2005
Ubicación: Málaga
Mensajes: 17
Antigüedad: 19 años, 4 meses
Puntos: 1
Pregunta TBODY e InnerHTML no funcionan en IE, ¿alguna alternativa?

Hola amigos, espero expresarme con claridad.
Como pone en el título, al usar la propiedad innerHTML de un TBody, Internet Explorer produce un fallo en tiempo de ejecución. Despues de buscar por la web soluciones y corroborar el problema, he intentado crear un método usando DOM bastante simple, para que me borre el TBODY:
Código:
	function vacia_tbody(name){
		var divcont = document.getElementById(name);
		var i,cont=0;;
		for (i=0;i<divcont.rows.length;i++){
			divcont.deleteRow(divcont.rows[i]);
			cont++;
		}
		if (cont!=0){
			alert(cont + 'filas borradas');
		}
	}
El alert era para intentar descubrir por qué no funcionaba, y es que parece que va borrando la tabla en distintas llamadas, es decir, si la tabla tiene cuatro filas, primero borra dos, aparece el alert, luego otra, aparece otro alert, y luego otra.
Para mí no tiene mucho sentido, pues deberían borrarse todas las filas de una estacada sin salir del bucle.

Por si acaso pego el código con el que la tabla es generada:
Código:
	function CreateCatMenu(tbodyID,opt){
		var tr, td, divtxt, img, divg;
    	var tbody = document.getElementById(tbodyID);
    	var frag = document.createDocumentFragment();
		for(var i=0;i<categorias.length;i++){
			tr = document.createElement("tr");
				td = document.createElement("td");
					divtxt = document.createElement('div');
					divtxt.id = "captxt"+i;
					var j=0;
					divtxt.cont=i;
					divtxt.onclick = function(){
					       clickoption(this.cont,opt);
					}
					divtxt.onmouseover = function() {
						var arg0=new String();
						arg0="captxt"+this.cont;
						MM_changeProp(arg0,'','style.backgroundColor','#CCFF99','DIV');							
                                                var j=0;
						for(j=0;j<this.cont;j++){
							arg0="captxt"+j;
							MM_changeProp(arg0,'','style.backgroundColor','#99FF99','DIV');
						}
						for(j=this.cont+1;j<categorias.length;j++){
							arg0="captxt"+j;
							MM_changeProp(arg0,'','style.backgroundColor','#99FF99','DIV');	
						}
					}
					var TextNode = document.createTextNode(categorias[i]);
					divtxt.appendChild(TextNode);
					td.appendChild(divtxt);
					td.appendChild(divtxt);
				tr.appendChild(td);
				td = document.createElement("td");
					img = document.createElement('img');
					img.id = "capimg"+i;	
					img.src = 'imagenes/mini_eye.gif';
					td.appendChild(img);
				tr.appendChild(td);
			frag.appendChild(tr);
		}
    	if (!tbody.appendChild(frag)) {
    		alert("This browser doesn't support dynamic tables.");
    	}
	}
Bueno... si alguien tiene el bien de darme alguna solución u opinión, estaría muy agardecido.