IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ajout dynamique de divisions au document (DOM)


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    JAVA/J2EE Oracle MySQL PostrgreSQL
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : JAVA/J2EE Oracle MySQL PostrgreSQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Points : 14
    Points
    14
    Par défaut Ajout dynamique de divisions au document (DOM)
    Bonjour à tous,

    ca fait un bout de temps que je n'ai pas fait de post.

    Mon problème est de pouvoir créer dynamiquement des divisions et de les ajouter au document chaque fois qu'on clique sur le bouton d'ajout.
    J'ai fait un petit code qui ne fonctionne pas et qui est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <html>
      <head>
        <script type="text/javascript">
          var count = 1;
          function addDiv() {
            var div = document.createElement("div");
            div.setAttribute("name","mydiv"+count);
            div.setAttribute("id","mydiv"+count);
            document.body.appendChild(div);
            div.style.left = (100 + (count-1)*60)+"px";
            div.style.top = (100 + (count-1)*60)+"px";
            div.style.width = "50px";
            div.style.height = "50px";
            div.style.visibility="visible";
            alert("clic sur Btn");
            count += 1;
          }
        </script>
      </head>
      <body>
        <input name="btn" id="btn" type="button" value="Add" onclick="addDiv()"/>
      </body>
    </html>
    je traine dessus depuis longtemps sans comprendre pourquoi ça ne fonctionne pas. L'exécution se fait sous firefox.

    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,

    Ton code fonctionne mais il n'y a rien dans ton div et un div n'a pas d'attribut name

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <html>
      <head>
        <script type="text/javascript">
          var count = 1;
          function addDiv() {
            var div = document.createElement("div");
     
            div.setAttribute("id","mydiv"+count);
            div.style.left = (100 + (count-1)*60)+"px";
            div.style.top = (100 + (count-1)*60)+"px";
            div.style.width = "50px";
            div.style.height = "50px";
    		div.innerHTML="div num"+count;
    		document.body.appendChild(div);
     
     
            alert("clic sur Btn");
            count += 1;
          }
        </script>
      </head>
      <body>
        <input name="btn" id="btn" type="button" value="Add" onclick="addDiv()"/>
      </body>
    </html>
    A+.

  3. #3
    Membre à l'essai
    Homme Profil pro
    JAVA/J2EE Oracle MySQL PostrgreSQL
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : JAVA/J2EE Oracle MySQL PostrgreSQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Merci pour votre réaction. J'avais mis par erreur l'attribut name et en extrayant uniquement la partie nécessaire de tout le code j'omis de copier l'ajout de la partie ayant innerHtml.

    J'ai bien tester le code que vous avez modifié mais l'autre problème qui se pose c'est le positionnement horizontal (position en x : left) qui ne fonctionne pas et pour le calcul de la position est correcte.

    J'ai modifié pour que l'alerte affiche la division, la position x et la position y.

    ce que je remarque c'est que les les divisions sont alignées verticalement alors que ca ne devrait pas être le cas.

    Merci d'avance pour votre aide

  4. #4
    Membre à l'essai
    Homme Profil pro
    JAVA/J2EE Oracle MySQL PostrgreSQL
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : JAVA/J2EE Oracle MySQL PostrgreSQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Toutes mes excuses, j'ai oublié de copier le code que voici :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <html>
      <head>
        <script type="text/javascript">
          var count = 1;
          function addDiv() {
            var div = document.createElement("div");
     
            div.setAttribute("id","mydiv"+count);
            div.style.left = (100 + ((count-1)*60))+"px";
            div.style.top = (100 + ((count-1)*60))+"px";
            div.style.width = "80px";
            div.style.height = "80px";
    		div.innerHTML="div num"+count;
    		document.body.appendChild(div);
     
     
            alert('ajout div : '+div.getAttribute("id")+' : '+div.style.left+' : '+div.style.top);
            count += 1;
          }
        </script>
      </head>
      <body>
        <input name="btn" id="btn" type="button" value="Add" onclick="addDiv()"/>
      </body>
    </html>

  5. #5
    Membre à l'essai
    Homme Profil pro
    JAVA/J2EE Oracle MySQL PostrgreSQL
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : JAVA/J2EE Oracle MySQL PostrgreSQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Le problème a été résolu en ajoutant div.style.position="absolute"

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout d'un élément à un document DOM avec batik
    Par MelodyBibi dans le forum 2D
    Réponses: 1
    Dernier message: 09/07/2015, 10h08
  2. [DOM] Ajouter dynamiquement des champs inputs
    Par bobic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/05/2008, 13h10
  3. [DOM] Ajout dynamique de tableau
    Par sacados1 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 14/06/2007, 16h38
  4. [DOM] Ajout dynamique d'une ligne dans un <table>
    Par Alzelus dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/05/2007, 17h05
  5. [DOM] Ajouter dynamiquement une zone de texte
    Par fadex dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 28/02/2007, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo