Foros del Web » Programando para Internet » Javascript » Frameworks JS »

createElement('table') no funciona en IE

Estas en el tema de createElement('table') no funciona en IE en el foro de Frameworks JS en Foros del Web. Hola chicos, Estoy migrando una aplicacion a AJAX, en fin poco a poco .... Intento crear una tabla de forma dinamica, adjunto el codigo de ...
  #1 (permalink)  
Antiguo 06/04/2008, 04:13
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 7 meses
Puntos: 0
createElement('table') no funciona en IE

Hola chicos,

Estoy migrando una aplicacion a AJAX, en fin poco a poco ....

Intento crear una tabla de forma dinamica, adjunto el codigo de esta, que funciona perfectamente en mozila firefox, pero en IE no hace nada! No crea nada.


Código PHP:
           var tab document.createElement('table');
       var 
tabBody document.createElement('tbody');
                
        for(
i=0i<dates.lengthi++){
                
        var 
id "bla"// cualquier valor da igual
                    
        
var title document.createTextNode(un valor);// cualquier valor da igual
                    
        
var row document.createElement('tr');
                    
        
/*cell with checkbox*/
        
var cellCb document.createElement('td');
                    
        
/*cell with title of paper*/
        
var cellTitle document.createElement('td');
                    
        
/*check box*/
        
var cb document.createElement('input');
        
cb.type "checkbox";
        
cb.id "id_paper[]";
        
cb.value id;
                    
        
cellCb.appendChild(cb);
        
cellTitle.appendChild(title);
                    
        
row.appendChild(cellCb);
        
row.appendChild(cellTitle);
                    
        
tabBody.appendChild(row);
        }
                    
    
tab.appendChild(tabBody);    
        
document.getElementById('respuesta').appendChild(tab); 

El div con id respuesta existe en el document.

El IE necesita un requerimiento adisional para crear tablas dinamicamente?
Es que no se ni por donde empezar. Como no sale ningun error ...

Graicas a todos!
  #2 (permalink)  
Antiguo 06/04/2008, 05:14
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: createElement('table') no funciona en IE

Hola:

Acabo de probarlo en explorer 7 y arreglando un par de cosillas funciona... falta en el código que nos pasaste el array dates (puse esto: var dates = [1,2,3,4];
Y entrecomille lo que pusiste en createTextNode()...

No sé en qué versión de ie lo probaste... las más viejas tienen implementaciones DOM más básicas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 06/04/2008, 06:34
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: createElement('table') no funciona en IE

Bueno, resulta (por suerte que entre en la pagina despues de unos 15 minutos) que funciona! Pero la respuesta AJAX que es inmediata en Firefox, tarda en IE unos muntos (1-2 minutos).
O sea que aparece la tabla despues de eso (2-3muntos).
No entiendo, porque tampoco me vale esperar tanto y en Firefox se ve enseguida, no tarda ni un segundo.

el codigo es este
Código PHP:
var miPeticion=getAjax();

function 
redArea(nrol){

   var 
area=nrol.value;

     var 
id_congreso=document.getElementById('id_congreso').value;
    
   var 
miAleatorio=parseInt(Math.random()*9999999);

var 
url='get_papers.php?area='+area+'&id_congreso='+id_congreso;

//open(‘method’, ‘url’ ‘a’);
miPeticion.open('GET'url+'&rand='+miAleatoriotrue);


miPeticion.onreadystatechange=respuestaAjax;


miPeticion.send(null);
}

function 
respuestaAjax(){
//si la respuesta del servidor es ok
if (miPeticion.readyState==4){
//deckaraciones que debe ejecutar el prgrama
    
if (miPeticion.status==200){
        
/*get array of papar tag */
        
var papers miPeticion.responseXML.getElementsByTagName('paper');

        
/*? array exists create new table*/
            
if(papers.length){
                
                var 
tab document.createElement('table');
                var 
tabBody document.createElement('tbody');
                
                    for(
i=0i<papers.lengthi++){
                    
                    
/* get childNode "id" value */
                    
var id papers[i].getElementsByTagName('id')[0].firstChild.nodeValue;
                    
                    
/* get childNode "title" value and create text Node */
                    
var title document.createTextNode(papers[i].getElementsByTagName('titulo')[0].firstChild.nodeValue);
                    
                    var 
row document.createElement('tr');
                    
                    
/*cell with checkbox*/
                    
var cellCb document.createElement('td');
                    
                    
/*cell with title of paper*/
                    
var cellTitle document.createElement('td');
                    
                    
/*check box*/
                    
var cb document.createElement('input');
                    
cb.type "checkbox";
                    
cb.id "id_paper[]";
                    
cb.value id;
                    
                    
cellCb.appendChild(cb);
                    
cellTitle.appendChild(title);
                    
                    
row.appendChild(cellCb);
                    
row.appendChild(cellTitle);
                    
                    
tabBody.appendChild(row);
                    }
                    
                        
tab.appendChild(tabBody);
                        
document.getElementById('respuesta').appendChild(tab);
                
        } else {
            
/*there are no papers found*/
        
}
    } else {
        
//creamos mensaje de error
        
alert(document.getElementById('respuesta').innerHTML="Ha ocurrido un error: "+miPeticion.statusText);
    }
} else {
//si readyState ha cambiado pero !=4
//metodo innerHTMl reemplazo el objeto a quien va asociado por el codigo html
//object.innerHTML=[html]
document.getElementById('respuesta').innerHTML='Se esta actualizando la información!';
}

  #4 (permalink)  
Antiguo 06/04/2008, 07:17
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: createElement('table') no funciona en IE

Movido al foro de AJAX desde JavaScript.

Saludos,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:53.