rozow Posté 24 Avril 2007 Partager Posté 24 Avril 2007 Bonjour je voudrais compter le nombre de caractère d'une ligne. J'ai fait la fonction suivante: function compte(){ var pave=document.getElementById("pave"); document.write(pave.length);} qui fait référence à la ligne suivante: <li id="pave">>> You Wot ?: the history of the English language</li> Et j'appelle la fonction avec le code suivant: <script language=javascript> compte();</SCRIPT> Le résultat ne me donne pas le nombre de caractère de la ligne, mais "undefined" Que dois-je faire? Lien vers le commentaire Partager sur d’autres sites More sharing options...
webor Posté 28 Mai 2007 Partager Posté 28 Mai 2007 (modifié) Bonjour, tu devrais essayer en modifiant la fonction js compte() : function compte(){ var pave=document.getElementById("pave").value; document.write(pave.length);} Modifié 28 Mai 2007 par webor Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lanza Posté 28 Mai 2007 Partager Posté 28 Mai 2007 (modifié) <li id="pave">>> You Wot ?: the history of the English language</li> This code is not valid HTML 4.01 transitional. Commence par remplacer les > dans le texte par ">", ça pourra t'éviter de mauvaises surprises par la suite. Ensuite, ce que tu récupères par getElementById() n'est pas une chaîne de caractères, mais un objet de type HTMLElement (dans le cas d'un LI, c'est même un objet HTMLLIElement). On ne peut donc pas compter le nombre de caractères qu'il contient, puisqu'il n'en contient pas. Il t'appartient de récupérer son contenu sous forme de chaîne de caractères, mais pas avec value comme le suggère webor, car si j'en crois la documentation du DOM pour l'élément LI, l'attribut value n'a rien à voir avec le contenu textuel de cet élément (c'est une histoire de numérotation des éléments de liste). Le plus simple serait d'utiliser "innerText", mais ça ne marche qu'avec Internet Explorer. Donc il te faut récupérer la valeur du noeud texte, premier enfant de ton élément LI : function compte(){ var pave=document.getElementById("pave"); document.write(pave.firstChild.nodeValue.length);} Ça devrait mieux marcher comme ça. Attention cependant, si tu as d'autres éléments HTML dans le contenu de ton LI, s'il est balisé quoi, ça ne marchera pas. Mais la solution dans ce cas est un poil plus compliquée. Modifié 28 Mai 2007 par Lanza Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant