Récupérer valeur dans une Class

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
Sylvain.P
Messages : 13
Enregistré le : 20 avr. 2020, 15:39

Récupérer valeur dans une Class

Message par Sylvain.P » 28 mai 2020, 16:57

Bonjour,
Je souhaite récupérer une valeur qui représente le nombre total de slides du diaporama (valeur entourée en rouge sur la capture d'écran ci-dessous).
Slide_1.png
Slide_1.png (38.47 Kio) Vu 6339 fois

En inspectant la page, j'ai vu que la valeur était stockée dans :

Code : Tout sélectionner

<span class="progTxtTotal">5</span>
Slide_2.png
Slide_2.png (8.66 Kio) Vu 6339 fois

J'ai essayé, grâce à console.log dans un premier temps, de récupérer cette valeur mais en vain.
Le mieux que j'ai pu avoir, c'est avec :

Code : Tout sélectionner

console.log( document.getElementsByClassName('progTxtTotal'));
Qui me renvoie, en autres, ce que l'on voit ci-dessous :

Slide_3.png
Slide_3.png (17.12 Kio) Vu 6339 fois

Dans la liste, il y a bien plusieurs lignes où on voit le 5 apparaître mais je n'arrive pas à le récupérer.
J'ai essayé :

Code : Tout sélectionner

console.log( document.getElementsByClassName('progTxtTotal').textContent);
ou

Code : Tout sélectionner

console.log( document.getElementsByClassName('progTxtTotal').innerText);
et bien d'autres (avec element., ById,...) mais rien n'a fonctionné...

Merci d'avance pour votre aide.
Sylvain.

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: Récupérer valeur dans une Class

Message par webmaster » 28 mai 2020, 18:30

Bonjour,

Il faut savoir que getElementsByClassName retourne un tableau d'éléments
https://www.toutjavascript.com/referenc ... ssname.php

Donc, il faut prendre le 1er element :

Code : Tout sélectionner

document.getElementsByClassName('progTxtTotal')[0].innerText
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Sylvain.P
Messages : 13
Enregistré le : 20 avr. 2020, 15:39

Re: Récupérer valeur dans une Class

Message par Sylvain.P » 30 mai 2020, 13:48

Bonjour et merci pour votre réponse.

J'ai une dernière requête afin de finaliser mon projet.
J'essaye de détourner le logiciel que j'utilise (qui de base n'a pas cette fonctionnalité) afin de pouvoir paramétrer dans le fichier JS un temps différent par diapo.
J’avais l’idée de détourner un élément lors de l’édition des diapo dans le logiciel (scenari) pour y stocker le temps afin de pouvoir le récupérer dans le fichier root.js à l’image des numéros de diapo et du nombre total de diapo.
Est ce que c’est possible ? En le mettant dans un mot clé, une balise, un titre… ?
Merci d'avance.
Sylvain.

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: Récupérer valeur dans une Class

Message par webmaster » 03 juin 2020, 13:20

Bonjour,

On peut enregistrer des informations dans une balise avec les attributs data-XXX

L'objet dataset permet d'y accéder facilement
https://www.toutjavascript.com/referenc ... ataset.php

Je pense que c'est la meilleure solution pour améliorer ce script.
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Sylvain.P
Messages : 13
Enregistré le : 20 avr. 2020, 15:39

Re: Récupérer valeur dans une Class

Message par Sylvain.P » 04 juin 2020, 09:42

Bonjour et merci pour votre réponse.
De ce que j'ai compris, il faut que j'édite une balise pour y ajouter le data-XXX.
Le problème c'est que je n'y ai pas accès.
J'ai cette interface dans le logiciel :

Capture_1.PNG
Capture_1.PNG (47.89 Kio) Vu 6287 fois

Qui affiche comme rendu :

Capture_2.PNG
Capture_2.PNG (26.44 Kio) Vu 6287 fois

Mon idée était de mettre le temps de mon slide à la place du titre de la question qui ne me sert pas et de pouvoir le récupérer dans le JS.
J'ai essayé plein de trucs en identifiant les class, les balises... qui se rapportaient au titre mais il ne me renvoi jamais son contenu.

Capture_3.png
Capture_3.png (86.52 Kio) Vu 6287 fois

J'ai également essayé de modifier directement le fichier de sortie en rajoutant à la main le data-XXX dans la balise span avec Notepad++, au moins pour voir si ça marchait mais il me renvoie ça : " Uncaught TypeError : Cannot read property 'dataset' of null.

J'ai également essayé avec les mots clés (où j'arrive à récupérer la chaîne de caractères de tous les mots clés mis à la suite, séparés par une virgule grâce à document.getElementsByName('keywords')[0].content)), mais ça serait dans tous les cas moins pratique pour la rédaction du diaporama...

Merci d'avance.
Sylvain.

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: Récupérer valeur dans une Class

Message par webmaster » 05 juin 2020, 13:55

Bonjour

Le message "Cannot read property 'dataset' of null" signifie que la récupération de l'élément n'est pas bonne

La difficulté ici est de trouver la bonne requete pour tomber sur l'élément.
Et comme il n'y a pas d'identifiant dans les slides, cela implique de parcourir tous les divs et de chercher celui qui est affiché avec opacity = 1

Cela risque d'être compliqué.
Peut etre existe-t-il un plugin pour ce logiciel ?
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Sylvain.P
Messages : 13
Enregistré le : 20 avr. 2020, 15:39

Re: Récupérer valeur dans une Class

Message par Sylvain.P » 05 juin 2020, 16:16

Merci pour votre réponse.
Je viens de poser la question sur le forum du logiciel.

Sylvain.P
Messages : 13
Enregistré le : 20 avr. 2020, 15:39

Re: Récupérer valeur dans une Class

Message par Sylvain.P » 18 juin 2020, 15:05

Bonjour,
N'ayant aucune réponse sur le forum du logiciel, j'ai continué de chercher et je me suis aperçu que c'était un deuxième fichier .js (dans le même dossier) qui me permettait d’accéder au contenu des diapo.
Il y a le fichier root.js qui gère, d’après ce que j'ai compris, "la structure générale" du diaporama : titre du diapo, les fonctions qui permettent de faire défiler les diapo, les boutons, le compte à rebours... et un fichier slide.js. Dans celui-ci, je suis arrivé à récupérer le contenu de mon titre (en utilisant : document.querySelectorAll('h2')[0].innerText).
Mais j'aimerais maintenant me servir de ce contenu dans le fichier root.js et c'est là que je sèche... J'ai essayé de chercher comment faire mais tout ce que j'ai trouvé ne fonctionne pas.
Merci d’avance.
Sylvain.

Edit : Finalement, je me suis débrouillé en détournant la balise "mots clés", cela fonctionne.

Répondre