Pregunta

Creo que esto es específico de IE 6.0 pero...

En JavaScript agrego un div al DOM.le asigno un id atributo.Cuando más tarde intento recoger el div por el id todo lo que consigo es null.

¿Alguna sugerencia?

Ejemplo:

var newDiv = document.createElement("DIV");
newDiv.setAttribute("ID", "obj_1000");
document.appendChild(newDiv);

alert("Added:" + newDiv.getAttribute("ID") + ":" + newDiv.id + ":" + document.getElementById("obj_1000") );

Impresiones de alerta "::null"

Parece funcionar bien en Firefox 2.0+

¿Fue útil?

Solución

Además de lo que sugieren las otras respuestas (que realmente necesita insertar el elemento en el DOM para encontrarlo a través de getElementById()), también necesita usar un nombre de atributo en minúsculas para que IE6 lo reconozca como el id:

var newDiv = document.createElement("DIV"); 
newDiv.setAttribute("id", "obj_1000");
document.body.appendChild(newDiv);

alert("Added:"
   + newDiv.getAttribute("id") 
   + ":" + newDiv.id + ":" 
   + document.getElementById("obj_1000") );

...responde como se esperaba:

Added:obj_1000:obj_1000:[object]

De acuerdo con la documentación de MSDN para setAttribute(), hasta IE8 hay una opción tercer parámetro que controla si distingue entre mayúsculas y minúsculas con respecto al nombre del atributo.Adivina cuál es el valor predeterminado...

Otros consejos

El div debe agregarse a un elemento para que forme parte del documento.

document.appendChild(newDiv);

alert( document.getElementById("obj_1000") );

Tienes que agregar el div al dom.

// Create the Div
var oDiv = document.createElement('div');
document.body.appendChild(oDiv);

newDiv.setAttribute( "ID", "obj_1000");

debiera ser

newDiv.id = "obj_1000";

Hummm, gracias por ponerme en el camino correcto chicos... esto fue extraño pero resulta que si cambio las mayúsculas a minúsculas, todo empieza a funcionar bien...

Resultado final:

var newDiv = document.createElement("DIV");
newDiv.setAttribute("id", "obj_1000");
document.appendChild(newDiv);

alert("Added:" +
      newDiv.getAttribute("id") + ":" +
      newDiv.id + ":" +
      document.getElementById("obj_1000"));

EXTRAÑO...MUY EXTRAÑO

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top