Aller au contenu

Sujets conseillés

Posté

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?

  • 1 month later...
Posté (modifié)

Bonjour,

tu devrais essayer en modifiant la fonction js compte() :

function compte()
{
var pave=document.getElementById("pave").value;
document.write(pave.length);
}

Modifié par webor
Posté (modifié)

<li id="pave">>> You Wot ?: the history of the English language</li>

This code is not valid HTML 4.01 transitional. :P

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é par Lanza

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...