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 :

Affichage éléments crées dynamiquement


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Affichage éléments crées dynamiquement
    Bonjour à tous et à toutes,

    Voici en quelque mot mon problème :
    le code ci-dessous a pour but d'afficher un nouveau lien dans une liste qui en possède déjà. Ce rajout se fait par l'intermédiaire du bouton "ajouter un lien". Avec ce code le lien saisi s'affiche correctement avec toutes les infos (auteur, lien, titre).

    Mais à l'affichage j'ai :

    - le lien qui ne s'affiche pas entre les guillemets dans la phrase : le lien "" a bien été créé. (voir l'image ci-dessous) (ce message est un message de confirmation qui apparaît lorsqu'on valide toutes les données saisies à savoir l'auteur, le lien, le titre)

    - les infos s'affiche mais le programme me rajoute deux lignes qui commencent (voir l'image ci-dessous)
    par http://
    ajouté par


    Merci pour votre aide.

    Voici mon code javascript
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    var listeLiens = [
        {
            titre: "So Foot",
            url: "http://sofoot.com",
            auteur: "yann.usaille"
        },
        {
            titre: "Guide d'autodéfense numérique",
            url: "http://guide.boum.org",
            auteur: "paulochon"
        },
        {
            titre: "L'encyclopédie en ligne Wikipedia",
            url: "http://Wikipedia.org",
            auteur: "annie.zette"
        }
    ];
     
    // TODO : compléter ce fichier pour ajouter les liens à la page web
     
     
     
    function elements(link) 
        {
            var titreElt = document.createElement("a");  // création variable "titreElt" de la balise "a".
            titreElt.href = link.url;                 // récupération de l'"url" présente dans le tableau
            titreElt.style.color = "#428bca";               // ajout de la couleur
            titreElt.appendChild(document.createTextNode(link.titre)); 
     
     
     
            var lienUrl = document.createElement("span");  // création variable "lienUrl" par rapport aux paramètres "span" dans le fichier CSS 
            lienUrl.appendChild(document.createTextNode(link.url));
     
     
     
            var insertTitre = document.createElement("h2");  // création variable "insertTitre" correspondant au sous-titre "h2" contenant le "titre" et son "URL" présent                                                        dans le tableau
            insertTitre.appendChild(titreElt);                 // "titre" présent dans le tableau
            insertTitre.appendChild(lienUrl);                   // "URL" présent dans le tableau
     
     
     
            var insertTitreUrl = document.createElement("span") // création variable "insertTitreUrl" pour l'auteur présent dans le tableau par rapport aux paramètres                                                              "span" dans le fichier CSS
            insertTitreUrl.appendChild(document.createTextNode("Ajouté par " + link.auteur));
     
     
     
            var insertDiv = document.createElement("div"); // création variable "insertDiv" pour la balise "DIV" pour chaque élément
            insertDiv.classList.add("lien");                // ajout de cette balise en tenant compte des paramètres présents dans le fichier CSS "lien"
            insertDiv.appendChild(insertTitre);             // insertion du titre "h2" avec son URL
            insertDiv.appendChild(insertTitreUrl);          // insertion de l'auteur
            return insertDiv; 
     
        }
     
     
     
     
        listeLiens.forEach(function (lien)  // fonction qui permet d'ajouter tous les éléments présents dans le tableau par rapport à la fonction "elements"
            {
     
                document.getElementById("contenu").appendChild(elements(lien));
     
            })
     
     //Bouton d'affichage du formulaire
     var affichageFormBouton = document.getElementById("ajoutForm");
     
     
     //Element Formulaire
    var formElt = document.getElementById("ajoutLien");
     
     
     //Elements du message de confirmation
     var messageAjout = document.getElementById("messageAjout");
     var messageTitre = document.getElementById("titre");
     
     //Affichage du formulaire d'ajout
     affichageFormBouton.addEventListener('click', function()
        {
         affichageFormBouton.style.display = "none";
        formElt.style.display = "block";
        });
        formElt = creerForm();
        document.body.insertBefore(formElt, contenu);
     
        // Animations et validation du formulaire
        formElt.addEventListener('submit', function(event)
            {
            formElt.style.display = "none";
            affichageFormBouton.style.display = "inline-block";
            ajoutNouveauLien();
            formElt.reset();
            event.preventDefault();
            });
     
    // Animations et validation du formulaire
    formElt.addEventListener('submit', function(event)
        {
        formElt.style.display = "none";
        affichageFormBouton.style.display = "inline-block";
        ajoutNouveauLien();
        formElt.reset();
        event.preventDefault();
        });
     
    function creerForm()
        {
        formElt = document.createElement("form");
        formElt.id = "ajoutLien";
        formElt.appendChild(inputMaker({"type":"text",
                                    "name":"auteur",
                                    "placeholder": "Entrez votre nom",
                                    "required":"required"}));
        formElt.appendChild(inputMaker({"type":"text",
                                    "name":"titre",
                                    "placeholder": "Entrez le titre du lien",
                                    "size": "30",
                                    "required":"required"}));
        formElt.appendChild(inputMaker({"type":"text",
                                    "name":"url",
                                    "placeholder": "Entrez l'URL du lien",
                                    "size" : "30",
                                    "required":"required"}));
        formElt.appendChild(inputMaker({"type":"submit",
                                    "name":"bouton",
                                    "value": "Ajouter"}));
        return formElt;
        }
     
    function inputMaker(attributes)
        {
        var element = document.createElement("input");
        for (var key in attributes){
            element.setAttribute(key, attributes[key])
        }
        return element;
        }
     
     
     function ajoutNouveauLien()
        {
         var url = formElt.elements.url.value;
     
         if ((url.indexOf("http://") !== 0) && (url.indexOf("https://") !== 0)) 
         {
    			// On la préfixe par "http://"
    			url = "http://" + url;
         }
     
     
     
     
         var lien ={
             auteur : formElt.elements.auteur.value,
             titre : formElt.elements.titre.value,
             url : url,
         }
         contenu.insertBefore(elements(lien),contenu.childNodes[1]);
     
     
         //gestion des affichages
         messageTitre.textContent = lien.titre;
         messageAjout.style.display = "block";
         setTimeout(function(){messageAjout.style.display = "none";}, 2000);
        }
    Voici l'image écran avec les deux erreurs :
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 359
    Points : 15 705
    Points
    15 705
    Par défaut
    montrez nous le code HTML que vous utilisez.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 10
    Points
    10
    Par défaut code html
    Bonjour Mathieu,

    Voici le code html
    Code html : 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
    26
    27
    28
    29
    30
    <!doctype html>
     <html>
     
     <head>
         <meta charset="utf-8">
         <link rel="stylesheet" href="../css/liensweb2.css">
         <title>Activité 2</title>
     </head>
     
     <body>
         <h1>Activité 2</h1>
     
         <p id="messageAjout">Le lien "<span id="titre"></span>" a bien été créé</p>
     
         <button id="ajoutForm">Ajouter un lien</button>
     
        <form id="ajoutLien">
            <input type="text" name="auteur" placeholder="Entrez votre nom" required="required">
            <input type="text" name="titre" size="30" placeholder="Entrer le titre du lien" required="required">
            <input type="text" name="url" size="30" placeholder="Entrer l'URL du lien"  required="required">
            <input type="submit" name="bouton" value="Ajouter">
        </form>
         <!-- Les nouveaux éléments sont ajoutés dans cette balise -->
         <div id="contenu">
         </div>
     
         <script src="../js/liensweb2.js"></script>
     </body>
     
    </html>

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 359
    Points : 15 705
    Points
    15 705
    Par défaut
    dans le code HTMl, vous n'avez pas besoin de mettre le formulaire "ajoutLien", il est déjà créé en JavaScript

    ensuite dans le code JavaScript, vous avez 2 fois le code "formElt.addEventListener('submit'...".

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 10
    Points
    10
    Par défaut correction faite
    Bonjour Mathieu et merci,

    étourderie de ma part. Maintenant mon code fonctionne comme il faut. Je donne ici les trois codes (html, js, css).

    Peut-être que quelqu'un en aura besoin.

    Code HTML /

    Code html : 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
    <!doctype html>
     <html>
     
     <head>
         <meta charset="utf-8">
         <link rel="stylesheet" href="../css/liensweb2.css">
         <title>Activité 2</title>
     </head>
     
     <body>
         <h1>Activité 2</h1>
     
         <p id="messageAjout">Le lien "<span id="titre"></span>" a bien été créé</p>
     
         <button id="ajoutForm">Ajouter un lien</button>
     
     
         <!-- Les nouveaux éléments sont ajoutés dans cette balise -->
         <div id="contenu">
         </div>
     
         <script src="../js/liensweb2.js"></script>
     </body>
     
    </html>

    Code CSS :
    Code CSS : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    body {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        background-color: #eee;
        margin-left: 30px;
        margin-right: 30px;
    }
     
    span {
        font-weight: normal;
        font-size: 80%;
    }
     
    .lien {
        background: white;
        padding: 10px;
        margin-bottom: 10px;
    }
     
    button{
         margin-bottom: 20px;
     }
     
     #titre{
         font-size: inherit;
     }
     
     #messageAjout{
         display: none;
         color : #428bca;
         background-color: rgba(66, 189, 222, 0.3) ;
         padding : 20px;
     }
     
    input{
        margin : 5px
    }
     
     form{
         display: none;
         margin-bottom: 20px;
     }

    Code JS :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    var listeLiens = [
        {
            titre: "So Foot",
            url: "http://sofoot.com",
            auteur: "yann.usaille"
        },
        {
            titre: "Guide d'autodéfense numérique",
            url: "http://guide.boum.org",
            auteur: "paulochon"
        },
        {
            titre: "L'encyclopédie en ligne Wikipedia",
            url: "http://Wikipedia.org",
            auteur: "annie.zette"
        }
    ];
     
    // TODO : compléter ce fichier pour ajouter les liens à la page web
     
     
     
    function elements(link) 
        {
            var titreElt = document.createElement("a");  // création variable "titreElt" de la balise "a".
            titreElt.href = link.url;                 // récupération de l'"url" présente dans le tableau
            titreElt.style.color = "#428bca";               // ajout de la couleur
            titreElt.appendChild(document.createTextNode(link.titre)); 
     
     
     
            var lienUrl = document.createElement("span");  // création variable "lienUrl" par rapport aux paramètres "span" dans le fichier CSS 
            lienUrl.appendChild(document.createTextNode(link.url));
     
     
     
            var insertTitre = document.createElement("h2");  // création variable "insertTitre" correspondant au sous-titre "h2" contenant le "titre" et son "URL" présent                                                        dans le tableau
            insertTitre.appendChild(titreElt);                 // "titre" présent dans le tableau
            insertTitre.appendChild(lienUrl);                   // "URL" présent dans le tableau
     
     
     
            var insertTitreUrl = document.createElement("span") // création variable "insertTitreUrl" pour l'auteur présent dans le tableau par rapport aux paramètres                                                              "span" dans le fichier CSS
            insertTitreUrl.appendChild(document.createTextNode("Ajouté par " + link.auteur));
     
     
     
            var insertDiv = document.createElement("div"); // création variable "insertDiv" pour la balise "DIV" pour chaque élément
            insertDiv.classList.add("lien");                // ajout de cette balise en tenant compte des paramètres présents dans le fichier CSS "lien"
            insertDiv.appendChild(insertTitre);             // insertion du titre "h2" avec son URL
            insertDiv.appendChild(insertTitreUrl);          // insertion de l'auteur
            return insertDiv; 
     
        }
     
     
     
     
        listeLiens.forEach(function (lien)  // fonction qui permet d'ajouter tous les éléments présents dans le tableau par rapport à la fonction "elements"
            {
     
                document.getElementById("contenu").appendChild(elements(lien));
     
            })
     
     //Bouton d'affichage du formulaire
     var affichageFormBouton = document.getElementById("ajoutForm");
     
     
     //Element Formulaire
    var formElt = document.getElementById("ajoutLien");
     
     
     //Elements du message de confirmation
     var messageAjout = document.getElementById("messageAjout");
     var messageTitre = document.getElementById("titre");
     
     //Affichage du formulaire d'ajout
     affichageFormBouton.addEventListener('click', function()
        {
         affichageFormBouton.style.display = "none";
        formElt.style.display = "block";
        });
        formElt = creerForm();
        document.body.insertBefore(formElt, contenu);
     
        // Animations et validation du formulaire
        formElt.addEventListener('submit', function(event)
            {
            formElt.style.display = "none";
            affichageFormBouton.style.display = "inline-block";
            ajoutNouveauLien();
            formElt.reset();
            event.preventDefault();
            });
     
    function creerForm()
        {
        formElt = document.createElement("form");
        formElt.id = "ajoutLien";
        formElt.appendChild(inputMaker({"type":"text",
                                    "name":"auteur",
                                    "placeholder": "Entrez votre nom",
                                    "required":"required"}));
        formElt.appendChild(inputMaker({"type":"text",
                                    "name":"titre",
                                    "placeholder": "Entrez le titre du lien",
                                    "size": "30",
                                    "required":"required"}));
        formElt.appendChild(inputMaker({"type":"text",
                                    "name":"url",
                                    "placeholder": "Entrez l'URL du lien",
                                    "size" : "30",
                                    "required":"required"}));
        formElt.appendChild(inputMaker({"type":"submit",
                                    "name":"bouton",
                                    "value": "Ajouter"}));
        return formElt;
        }
     
    function inputMaker(attributes)
        {
        var element = document.createElement("input");
        for (var key in attributes){
            element.setAttribute(key, attributes[key])
        }
        return element;
        }
     
     
     function ajoutNouveauLien()
        {
         var url = formElt.elements.url.value;
     
         if ((url.indexOf("http://") !== 0) && (url.indexOf("https://") !== 0)) 
         {
    			// On la préfixe par "http://"
    			url = "http://" + url;
         }
     
     
     
     
         var lien ={
             auteur : formElt.elements.auteur.value,
             titre : formElt.elements.titre.value,
             url : url,
         }
         contenu.insertBefore(elements(lien),contenu.childNodes[1]);
     
     
         //gestion des affichages
         messageTitre.textContent = lien.titre;
         messageAjout.style.display = "block";
         setTimeout(function(){messageAjout.style.display = "none";}, 2000);
        }

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  2. problème affichage image
    Par thealpacino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/05/2005, 13h56
  3. Problème affichage primitive
    Par goutbouyo dans le forum DirectX
    Réponses: 4
    Dernier message: 29/12/2004, 18h25
  4. [Plugin][VE] Problème affichage
    Par sebb84 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/07/2004, 14h50
  5. [DOS] Problème affichage de DOS dans un Memo
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 25/06/2004, 13h31

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