¿Cómo crear un nuevo div de forma dinámica, cambiarlo, moverlo, modificarlo de todas las formas posibles, en JavaScript?

82

Quiero crear nuevos divs a medida que se carga la página. Estos divs aparecerán como un grupo ordenado que cambia según los datos externos de un archivo JSON. Necesitaré hacer esto con un ciclo for porque se necesitan más de 100 divs.

Por lo tanto, necesito poder cambiar cada div creado con respecto a la altura, el ancho, la parte superior / izquierda, etc. Sin embargo, document.getElementById("created_div").style.whateverno hace nada, ni siquiera puedo ver aparecer un solo div nuevo. Establecí la nueva altura / ancho de divs en 500px, el fondo en "rojo", y así sucesivamente, pero definitivamente no aparecen nuevos divs.

¿Qué estoy haciendo mal?

Erik Nelson
fuente
2
Comparta el código que usa para crear divs
wakooka
1
$ ("# box0"). append ('<div id = "created_div"> </div>');
Erik Nelson
Si está haciendo esto en un bucle, ¿significa eso que está intentando crear 100 divs con el mismo identificador?
Evan Trimboli
busque en la consola del navegador ... ¿algún error? Aunque la ID no debe repetirse ... no debe evitar que se inserte si el selector existe y no se producen errores.Los errores son la primera verificación crítica
charlietfl
además de crearlos, ¿los insertas en el DOM?
Gabriele Petrioli

Respuestas:

425

Esto cubre los conceptos básicos de la manipulación DOM. Recuerde, se requiere la adición de elementos al cuerpo o un nodo contenido en el cuerpo para que el nodo recién creado sea visible dentro del documento.

Ryan Stein
fuente
-1

¿Has probado JQuery ? JavaScript de vainilla puede ser difícil. Intente usar esto:

$('.container-element').add('<div>Insert Div Content</div>');

.container-elementes un selector de JQuery que marca el elemento con la clase "contenedor-elemento" (presumiblemente el elemento padre en el que desea insertar sus divs). Luego, la add()función inserta HTML en el elemento contenedor.

Brad Ross
fuente
Bueno, lo tengo. Tuve que establecer el relleno en un valor superior a 0. Aunque su altura y ancho están configurados en 64 cada uno. Bleh. ¿Hay alguna forma de que un div infantil actúe como un div normal? El objetivo es hacer que cada div actúe como un enlace. Intentando crear una lista dinámica para el sitio web de un juego; /
Erik Nelson
1
No estoy de acuerdo con esto, innerHTML (lo que jquery usa para eso) NO es estándar, y el precio de no seguir el estándar puede conducir a un mal comportamiento. Además, para mí, no tiene ningún sentido agregar una cadena html plan en un árbol DOM en lugar de agregar elementos de nodo.
StormByte
2
Teniendo en cuenta que todo el árbol DOM comienza su vida como HTML simple y antiguo, y que innerHTML es solo eso: el HTML que tiene un elemento, tener un problema con cualquiera de ellos está a la par con decir que no debe usar el DOM porque está contaminado el HTML antiguo y simple.
Rodney P. Barbati