11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour

Je cherche à trier les éléments <li> d'une liste sur la valeur du texte contenu dans ces balises.
Jusqu'à présente, je faisais un tri sur la valeur de la propriété innerHTML, mais s'il y a des "enfants", par exemple des images dans la balise, les balises des enfants viennent perturber le tri.

J'ai essayé d'utiliser la propriété nodeValue, mais je ne comprends pas très bien comment elle fonctionne en Javascript.
a écrit :
The nodeValue property sets or returns the node value of the specified node.
If the node is an element node, the nodeValue property will return null.


La plupart des "nodes" du DOM étant des "element nodes", à l'exception semble-t-il des #text nodes, je n'ai pas vu d'autre façon de récupérer le contenu textuel d'un élément que d'écrire une fonction qui parcourt les enfants de l'élément de façon récursive pour trouver les #text et prendre la valeur de nodeValue. C'est ce que j'ai fait et cela semble donner satisfaction.

Cela me semble bien compliqué pour une fonction aussi utile, en PHP, nodeValue fonctionne sur tous les nœuds.
Connaissez-vous une façon plus simple d'obtenir ce résultat?
ça marche, mais c'est déclaré obsolète et non standard.
Les oracles recommandent d'utiliser ... innerHTML quine convient absolument pas.
De même textContent n'a pas non plus l'air d'être adéquat..
Cette situation est totalement incompréhensible: rendre obsolète une fonction sans lui donner un remplaçant???
Qu'est-ce qui ne va pas avec textContent ?

innerText, certains navigateurs l'ont effectivement implémenté mais à la base c'était du IE only.
QuentinC a écrit :
Qu'est-ce qui ne va pas avec textContent ?

innerText, certains navigateurs l'ont effectivement implémenté mais à la base c'était du IE only.

textContent prend en compte le contenu des balises <script>, ce qui est logique mais ne me convient pas.