Bonjour je suis sur Activité 3 - Utilisez un serveur web externe dans le cours Créez des pages web interactives avec JavaScript pour le moment j'obtient ce resultat au lien https://codepen.io/yamishibai/pen/EdBzNR?editors=0110

mais je voudrais ce résultat :

https://static.oc-static.com/prod/co...ite_3_demo.gif

comment faire pour l'obtenir?

et voici mon code

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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
 
// Exécute un appel AJAX POST
// Prend en paramètres l'URL cible, la donnée à envoyer et la fonction callback appelée en cas de succès
// Exécute un appel AJAX POST
// Prend en paramètres l'URL cible, la donnée à envoyer et la fonction callback appelée en cas de succès
// Le paramètre isJson permet d'indiquer si l'envoi concerne des données JSON
function ajaxGet(url, callback) {
    var req = new XMLHttpRequest();
    req.open("GET", "https://oc-jswebsrv.herokuapp.com/api/liens");
    req.addEventListener("load", function() {
        if (req.status >= 200 && req.status < 400) {
            // Appelle la fonction callback en lui passant la réponse de la requête
            callback(req.responseText);
 
        } else {
            console.error(req.status + " " + req.statusText + " " + "https://oc-jswebsrv.herokuapp.com/api/liens");
        }
    });
    req.addEventListener("error", function() {
        console.error("Erreur réseau avec l'URL " + "https://oc-jswebsrv.herokuapp.com/api/liens");
    });
    req.send(null);
}
 
 
 
 
function ajaxPost(url, data, callback, isJson) {
    var req = new XMLHttpRequest();
    req.open("POST", "https://oc-jswebsrv.herokuapp.com/api/lien");
    req.addEventListener("load", function() {
        if (req.status >= 200 && req.status < 400) {
            // Appelle la fonction callback en lui passant la réponse de la requête
            callback(req.responseText);
        } else {
            console.error(req.status + " " + req.statusText + " " + "https://oc-jswebsrv.herokuapp.com/api/lien");
        }
    });
    req.addEventListener("error", function() {
        console.error("Erreur réseau avec l'URL " + "https://oc-jswebsrv.herokuapp.com/api/lien");
    });
    if (isJson) {
        // Définit le contenu de la requête comme étant du JSON
        req.setRequestHeader("Content-Type", "application/json");
        // Transforme la donnée du format JSON vers le format texte avant l'envoi
        data = JSON.stringify(data);
    }
    req.send(data);
}
 
 
 
 
 
/* 
Activité 1
*/
 
// Liste des liens Web à afficher. Un lien est défini par :
// - son titre
// - son URL
// - son auteur (la personne qui l'a publié)
 
 
// TODO : compléter ce fichier pour ajouter les liens à la page web
 
// ci-dessous toute les variable pour les boutons et input
var element = document.getElementById('contenu');
var button = document.createElement("button");
button.id = "boutton"
element.appendChild(button);
button.appendChild(document.createTextNode("Ajouter un lien"));
button.style.marginBottom = "15px";
button.onclick = ajouter;
 
var push = document.createElement("button");
push.id = "bitton";
element.appendChild(push);
push.style.position = "absolute";
push.style.bottom = "88.9%";
push.style.left = "45.5%";
push.appendChild(document.createTextNode("Ajouter "));
document.getElementById("bitton").style.visibility = "collapse";
var nomElt = document.createElement("input");
nomElt.id = "valeur1;"
var lienElt = document.createElement("input");
lienElt.id = "valeur2";
var eltUrl = document.createElement("input");
eltUrl.id = "valeur3";
var input = document.querySelector("input");
var forma = document.createElement("form");
forma.id = "formi";
element.appendChild(forma);
 
element.insertAdjacentElement("beforebegin", button);
 
 
//fonction qui compose le formaulaire 
function ajouter(e) {
 e.stopPropagation();
    var push = document.createElement("button");
    push.id = "bitton";
    document.getElementById("boutton").style.visibility = "collapse";
    document.getElementById("bitton").style.visibility = "visible";
 
    forma.appendChild(nomElt);
    forma.appendChild(lienElt);
    forma.appendChild(eltUrl);
    this.onclick = undefined;
    button.style.position = "relative";
    button.style.left = "45.5%";
    nomElt.style.position = "absolute";
    nomElt.style.bottom = "88.9%";
    lienElt.style.position = "absolute";
    lienElt.style.bottom = "88.9%";
    lienElt.style.left = "16.8%";
    eltUrl.style.position = "absolute";
    eltUrl.style.bottom = "88.9%";
    eltUrl.style.left = "31.2%";
    nomElt.placeholder = "Ajouter votre Nom";
    lienElt.placeholder = "Entrer le titre du Lien";
    eltUrl.placeholder = "Entrer l'URL du lien";
}
 
 
//fonction qui fait apparaitre le résultat de la saisie 
push.addEventListener("click", majouter);
function majouter(e) {
 
    var temoignage = {
 
        titre: lienElt.value,
 
        url: eltUrl.value,
 
        auteur: nomElt.value
 
    }
 
ajaxPost("https://oc-jswebsrv.herokuapp.com/api/lien", temoignage,
        function() {
if ((temoignage.auteur === "") || (temoignage.titre === "") || (temoignage.url === "")) {
                alert("Salut, tu dois remplir le formulaire")
            } else {
 
               var w = document.createElement("p");
                w.appendChild(document.createTextNode("Le lien" + " " + temoignage.titre + " " + "a été ajouté"));
                var myWindow = document.createElement("div");
                myWindow.setAttribute("class", "lien");
                myWindow.style.width = "97%";
                myWindow.style.position = "relative";
                myWindow.style.bottom = "5px";
                myWindow.style.backgroundColor = "#99e6ff";
                myWindow.style.color = "#428bca";
                element.appendChild(myWindow);
                myWindow.appendChild(w);
                setTimeout(function() {
                    myWindow.style.display = "none"
                }, 2000);
              element.insertAdjacentElement("beforebegin", myWindow);
                ajaxGet();
 
            }
 
 
         }, true) 
 
 
        }
 
 
function transferComplete(req) {
    // se déclenche quand la requete revien du serveur
    // verifie les status http
    try {
        // si erreur envoie directement au catch sans exécuter la suite du code
        if (req.status < 200 && req.status >= 400) throw req.status;
        // pas d'erreur execute la fonction modifyDom
        modifyDom(req.responseText); 
    } catch (error) {
        // envoie a la fonction de gestion des erreurs
        errorHandler(error);
    }
}
 
function errorHandler(error) {
    // se déclenche en cas d'erreur http
    console.log("Erreur http :" + error);
}
 
function modifyDom(data) {
    // affiche le data ( les liens) ici tu peu placer la modification du dom
    obj = JSON.parse(data);
var divo = document.createElement("div");
divo.setAttribute("class", "lien");
divo.style.width ="97%"
element.appendChild(divo);
 
 
 
 
var titreElt = document.createElement("a"); 
titreElt.href = obj[0].url;
titreElt.appendChild(document.createTextNode(obj[0].titre));
titreElt.style.textDecoration = "none";
titreElt.style.fontSize = "20px";
titreElt.style.fontWeight = "bolder";
titreElt.style.backgroundColor = "white";
titreElt.style.padding = "6px";
 
var urlElt = document.createElement("string"); 
urlElt.textContent = " "+ obj[0].url
urlElt.style.backgroundColor = "white";
if ((obj[0].url.indexOf("https://") === -1) && (obj[0].url.indexOf("http://") === -1)) {
           urlElt.innerHTML = "http://" + obj[0].url;
        }
var auteurElt = document.createElement("p"); 
auteurElt.appendChild(document.createTextNode("Ajouter par" + " " + obj[0].auteur));
auteurElt.style.backgroundColor = "white";
auteurElt.style.marginBottom = "4px";
auteurElt.style.marginLeft = "6px";
auteurElt.style.marginTop = "0px";
auteurElt.style.width ="98%";
titreElt.style.color = "#428bca";
 
 
divo.appendChild(titreElt);
divo.appendChild(urlElt);
divo.appendChild(auteurElt);
element.appendChild(divo);
element.insertAdjacentElement("beforebegin",divo );
 
 
 
 
    console.log(obj[0].titre)
    console.log(obj[0].url)
    console.log(obj[0].auteur)
    console.log(data);
}
 
 
function ajaxGet() {
    var req = new XMLHttpRequest();
    // load est trigger quand le serveur a répondu quelque chose
    req.addEventListener("load", function() {
        transferComplete(req);
    });
    // error trigger quand le serveur est indisponible
    req.addEventListener("error", function() {
        errorHandler(req.status);
    });
    // toujour mettre open après avoir mis des events listeners
    req.open("GET", "https://oc-jswebsrv.herokuapp.com/api/liens");
    req.send();
}