Bonjour à tous
Dans le code ci dessous permettant de filtrer les dates suivant choix dans un select, je voudrais qu'à l'ouverture de page le type de tri soit descendant...
J'ai essayé d'appeler les fonctions correspondantes dans un window.onload mais vu que la fonction est externe au fetch réalisé, pas moyen d’accéder aux variables sans qu'un "undefined" soit signalé !
J'ai aussi essayé d'externaliser les autres fonctions en dehors du fetch : la variable principale "evts" devient "undefined" elle aussi et le code bloque même lorsque déclaré en début de module...
A noter que l'affichage du filtre en question marche parfaitement mais seulement lorsqu'on utilise le select...
Comment faire ? quelles seraient les bonnes pratiques ?
Merci d'avance
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 let divNewsList = document.querySelector('.news-list') let selectTriDate = document.querySelector('#triDateEvenement') // let evtsSorted="" window.onload = (evts) => { evts.sort(triDateFrDesc) triParDate(evts) afficherListeEvts(evts) } const urlEvenements = fetch("./json/evenements.json") .then(response => { return response.json() }) .then(evts => { const triParDate = (evts) => { if (selectTriDate.value == 1) { evts.sort(triDateFrDesc) } if (selectTriDate.value == 2) { evts.sort(triDateFrAsc) } function triDateFrDesc(a, b) { dateA = new Date(a.date.split("/").reverse().join('-')); dateB = new Date(b.date.split("/").reverse().join('-')); return (dateA < dateB) ? 1 : -1; } function triDateFrAsc(a, b) { dateA = new Date(a.date.split("/").reverse().join('-')); dateB = new Date(b.date.split("/").reverse().join('-')); return (dateA > dateB) ? 1 : -1; } } const afficherListeEvts = (evts) => { const html = evts.map(evt => { return `<article> <div class="col-md-6 mx-auto"> <div class="card bg-light text-black"> <div class="card-body"> <div class="container d-flex justify-content-start date-news"> <p class="card-title mb-3 news-date text-left mx-1"> <i class="bi bi-calendar3 my-auto"></i> ${evt.date}</p> </div> <div class="container"> <h5 class="text-primary">${evt.title}</h5> <div class="card-text">${evt.content.join('')}</div> <div class="text-center"> <a href="#" class="btn btn-primary mt-2">Voir plus ...</a> </div> </div> </div> </div> </article>` }) divNewsList.innerHTML = html } //Classe par date Française en ascendant ou descendant //suivant le choix utilisateur dans le select selectTriDate.addEventListener('change', () => { triParDate(evts) afficherListeEvts(evts) console.log(evts) }) })
Partager