87 votes

Comment créer un nouveau div dynamiquement, le changer, le déplacer, le modifier de toutes les manières possibles, en JavaScript ?

Je veux créer de nouvelles divisions au fur et à mesure que la page se charge. Ces divs apparaîtront comme un groupe ordonné qui changera en fonction de données externes provenant d'un fichier JSON. J'ai besoin de faire cela avec une boucle for car il y a plus de 100 divs nécessaires.

J'ai donc besoin de pouvoir modifier chaque div créé en ce qui concerne la hauteur, la largeur, le haut et la gauche, etc. Pourtant, document.getElementById("created_div").style.whatever ne fait rien, je ne vois même pas apparaître une seule nouvelle division. J'ai réglé la hauteur/largeur des nouvelles divisions sur 500px, l'arrière-plan sur "rouge", etc., mais aucune nouvelle division n'apparaît vraiment.

Qu'est-ce que je fais de mal ?

445voto

Ryan Stein Points 3493

Ceci couvre les bases de la manipulation du DOM. N'oubliez pas que l'ajout d'un élément au corps ou à un nœud contenant le corps est nécessaire pour que le nœud nouvellement créé soit visible dans le document.

0voto

user1588303 Points 173

En fonction de votre liste et de sa source, il peut être préférable de le faire à la source. Par exemple, si vous chargez les données sources à partir d'une base de données, vous pourriez...

(cet exemple est dans oracle, donc || est pour concaténer des chaînes de caractères)

SELECT
    '<div id="' || id || '">' || SomeFieldOrExpressionHere || '</div>'
FROM
    sometable

Ensuite, vous pourriez ajaxer le tout dans un conteneur en attente (comme un div) avec le jQuery suivant...

$(IdOfOuterContainer).load(TheURLThatReturnsTheResultsOfTheSELECTAbove);

Ce serait beaucoup plus rapide que d'ajouter chaque élément via javascript, et probablement aussi beaucoup moins de code.

-2voto

Brad Ross Points 137

Avez-vous essayé JQuery ? Vanilla javascript peut être difficile. Essayez d'utiliser ceci :

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

.container-element est un sélecteur JQuery qui marque l'élément avec la classe "container-element" (vraisemblablement l'élément parent dans lequel vous voulez insérer vos divs). Ensuite, l'élément add() insère du HTML dans l'élément conteneur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X