Bonjour à tous et à toutes,
Je suis sur une page HTML qui, dans un de ses blocs, appelle un script JS qui permet d'afficher les horaires de 3 médiathèques en fonction du jour de la semaine.
Voici le code dans la page HTML :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <div id="horaires"> <h2 class="block-title-horaires">Horaires</h2> <div class="liste-horaires"> <script language="JavaScript"> document.write(horairesouverture()); </script> <a href="https://mon-site-inter.net/horaires" class="en-savoir-plus-horaires en_savoir_plus">En savoir plus</a> </div> </div>
Voici ce que contient le fichier horaires_ouverture.js appelé dans la page HTML :
Code js : 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 function horairesouverture() { var day = new Date().getDay(); //Lundi if(day==1){ return'<div class="col-md-12"\><h3 class="nom_mediatheque mitterrand"\>Médiathèque François Mitterrand</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 13h à 19h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Victor Hugo</h3\><div class="fermee"\>Fermée</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Alphonse Daudet</h3\><div class="fermee"\>Fermée</div\></div\>' ; } //Mardi else if (day==2){ return'<div class="col-md-12"\><h3 class="nom_mediatheque mitterrand"\>Médiathèque François Mitterrand</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 10h à 19h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Victor Hugo</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 14h à 18h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Alphonse Daudet</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 14h à 18h</div\></div\>' ; } //Mercredi else if (day==3){ return'<div class="col-md-12"\><h3 class="nom_mediatheque mitterrand"\>Médiathèque François Mitterrand</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 10h à 19h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Victor Hugo</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 10h à 12h30 et de 14h à 18h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Alphonse Daudet</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 10h à 12h30 et de 14h à 18h</div\></div\>' ; } //Jeudi else if (day==4){ return'<div class="col-md-12"\><h3 class="nom_mediatheque mitterrand"\>Médiathèque François Mitterrand</h3\><div class="fermee"\>Fermée</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Victor Hugo</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 14h à 18h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Alphonse Daudet</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 14h à 18h</div\></div\>' ; } //Vendredi else if (day==5){ return'<div class="col-md-12"\><h3 class="nom_mediatheque mitterrand"\>Médiathèque François Mitterrand</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 10h à 19h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Victor Hugo</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 14h à 18h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Alphonse Daudet</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 14h à 18h</div\></div\>' ; } //Samedi else if (day==6){ return'<div class="col-md-12"\><h3 class="nom_mediatheque mitterrand"\>Médiathèque François Mitterrand</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 10h à 18h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Victor Hugo</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 10h à 12h30 et de 14h à 18h</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Alphonse Daudet</h3\><div class="ouverte"\>Ouverte</div\><div class="horaires_ouverture"\>De 10h à 12h30 et de 14h à 18h</div\></div\>' ; } //Dimanche else{ return'<div class="col-md-12"\><h3 class="nom_mediatheque mitterrand"\>Médiathèque François Mitterrand</h3\><div class="fermee"\>Fermée</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Victor Hugo</h3\><div class="fermee"\>Fermée</div\></div\><div class="col-md-12"\><h3 class="nom_mediatheque"\>Médiathèque Alphonse Daudet</h3\><div class="fermee"\>Fermée</div\></div\>'; } }
Comme vous pouvez le voir, il y a pas mal de code HTML dans ce fichier JS.
Régulièrement (à chaque vacances à vrai dire), le client demande à ce qu'on change les horaires. Etant donné que c'est moi qui ai mis en place ce fichier JS (qui plus est dans un dossier dont le client n'a pas accès), c'est moi qui le modifie à chaque fois.
A moyen-long terme, je pense changer de boite. Résultat, ce sera mon/ma remplaçant(e) ou un(e) de mes collègues qui se chargera de les changer.
Pour faciliter la tache de cette/ces personne(s), je voudrais créer un fichier HTML (plus facile à modifier qu'un fichier JS) PAR jour de la semaine (soit 7 fichiers) et appeler le fichier HTML correspondant dans le fichier JS.
En gros, le lundi, le fichier JS appelle le fichier lundi.html, le mardi, le fichier JS appelle le fichier mardi.html, ...
Comme on est dimanche, j'ai créé un fichier dimanche.html avec le code HTML de dimanche (logique).
Ensuite, via une ligne de script JS que j'ai trouvée sur Internet et mis à ma sauce, j'appelle ce fichier HTML :
Code js : Sélectionner tout - Visualiser dans une fenêtre à part document.querySelector('#horaires .liste-horaires').innerHTML='<object type="text/html" data="https://mon-site-inter.net/horaires/dimanche.html" ></object>';
Cependant, il y a plusieurs problèmes :
Voici le code HTML qui en résulte :
Avec le résultat visuel suivant :
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 <div class="bloc-horaires"> <object type="text/html" data="https://mediatheque.lorient.bzh/data/mediatheque.lorient.bzh/application/layout/public/pageperso/dimanche.html"> #document <html> <head></head> <body> <div class="col-md-12"> <h3 class="nom_mediatheque mitterrand">Médiathèque François Mitterrand</h3> <div class="fermee">Fermée</div> </div> <div class="col-md-12"> <h3 class="nom_mediatheque">Médiathèque Victor Hugo</h3> <div class="fermee">Fermée</div> </div> <div class="col-md-12"> <h3 class="nom_mediatheque">Médiathèque Alphonse Daudet</h3> <div class="fermee">Fermée</div> </div> </body> </html> </object> </div>
Au lieu de celui-ci :
Comme vous pouvez le voir, le script JS appelle un objet qui contient un document HTML avec (logiquement) un head (vide) et un body. C'est un peu comme une iFrame ce qui fait sauter le style CSS.
Y-a-t-il une autre méthode pour :
- appeler un fichier HTML facilement modifiable par quelqu'un ayant pas/peu de connaissance en programmation web
- avoir le même rendu que sur la dernière capture d'écran ?
Je vous remercie par avance pour vos réponses
Bonne journée![]()
Partager