Foros del Web » Programando para Internet » Javascript »

innerHTML porque con DOM es imposible

Estas en el tema de innerHTML porque con DOM es imposible en el foro de Javascript en Foros del Web. Hola, tengo entendido que innerHTML es propiedad de microsoft, que no se trata de ningun estandar. Por esta razón al crear una función para obtener ...
  #1 (permalink)  
Antiguo 16/05/2008, 01:09
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
innerHTML porque con DOM es imposible

Hola,
tengo entendido que innerHTML es propiedad de microsoft, que no se trata de ningun estandar. Por esta razón al crear una función para obtener con ajax unos datos de un fichero php quiero utilizar DOM.

El problema se presenta a la hora de mostar los datos en un div. Quiero mostar dentro de este div un campo <select>, utilizando DOM me aprece el codigo HTML, mientras que utilizando innerHTML si me aprece el boton.

Con DOM he utilizado createTextNode, existe alguna forma de obtener con DOM el mismo resultado que con innerHTML, es decir, conseguir traer un boton <select> donde poder pinchar, no el codigo en texto plano.

Gracias.
  #2 (permalink)  
Antiguo 16/05/2008, 01:23
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: innerHTML porque con DOM es imposible

Claro que es posible.

Pon tu código para que veamos cómo lo estás haciendo exactamente.
  #3 (permalink)  
Antiguo 16/05/2008, 02:03
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: innerHTML porque con DOM es imposible

Yo llamo a producto, esta me crea un div con un id, luego producto llama a muestraContenidos que me inserta en el div creado el contenido de nuevo_producto.php. En nuevo_producto.php hay un <select> con los <option> obtenidos de una base de datos.

Y el problema esta aqui

Cita:
ver.innerHTML=http_request.responseText;
funciona, pero innerHTML no es un estandar y con DOM no aparece el select, aparece el codigo.

Código PHP:
function muestraContenidos(div,url
{
    
//div donde saldran los resultados
    
var ver=document.getElementById(div);
    
// Obtener la instancia del objeto XMLHttpRequest
    
http_request=loadXMLDoc();    
    
    
// Preparar la funcion de respuesta
    
http_request.onreadystatechange muestraContenido;
    
// Realizar peticion HTTP
    
    //nocache
    
var num=Math.random(); 
    
http_request.open('GET'url+'&noCache='+numtrue);
    
http_request.send(null);
    function 
muestraContenido()
    { 
        if(
http_request.readyState == 4
        {
            
ver.innerHTML=http_request.responseText;            
            
http_request.abort();
        } 
        else 
        { 
            
//cargando...
            
ver.innerHTML="Cargando...";
        }
    }
}

function 
Producto(id_clase,idDiv)
{
    var 
nuevoDiv;
    
        
//crear nuevo div
        
nuevoDiv=document.createElement('div');
        
nuevoDiv.setAttribute("id",idDiv+"_producto_"+producto); 
        
document.getElementById('productos_'+idDiv).appendChild(nuevoDiv);
        
        
//rellenar el div        
        
muestraContenidos(idDiv+'_producto_'+producto,encodeURI('../llamadas/pedidos/nuevo_producto.php?id_clase='+id_clase+'&id='+idDiv));

  #4 (permalink)  
Antiguo 16/05/2008, 02:48
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: innerHTML porque con DOM es imposible

A ver... Has puesto el código que sí que funciona. El que usa innerHTML. Bien, vale.

Pero lo que pedía es que pusieras el código que has intentado hacer creando los nodos en el DOM, el código que dices que no muestra el <select> sino el código fuente. Porque ese es el que no funciona y el que quieres arreglar, ¿no?
  #5 (permalink)  
Antiguo 16/05/2008, 04:31
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: innerHTML porque con DOM es imposible

Con:
Código PHP:
ver.innerHTML=http_request.responseText;            
http_request.abort(); 
funciona, pero innerHTML no es estandar.

Con esto funciona, pero el codigo HTML no es interpretado por el navegador,
si no que muestra el codigo tal cual.
Código PHP:
var info;
info=document.createTextNode(http_request.responseText); 
ver.appendChild(info);
http_request.abort(); 
  #6 (permalink)  
Antiguo 16/05/2008, 04:52
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: innerHTML porque con DOM es imposible

Claro, normal. Porque lo que estás haciendo es crear un TextNode.

Tendrías que hacerlo igual que cuando creas el primer <div>. Haces un createElement de tipo Select, luego le añades objetos Option y luego insertas en el DOM.
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




La zona horaria es GMT -6. Ahora son las 00:41.