¿Cómo agrego un div y lo recojo más tarde?
-
09-06-2019 - |
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+
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