2011-02-12 12 views
14

Dans la fenêtre contextuelle, selText a la valeur "great", mais la longueur est toujours undefined. Quelque chose lié à l'encodage de la chaîne? Parce que vous obtenez un objet de sélection DOM au lieu d'un String.pourquoi string.length renvoie undefined?

var selText = document.getSelection(); //suppose "great" is selected 
alert("selected ->" + selText + " len is " + selText.length); 

Répondre

24

Pour obtenir le texte, appelez le toString().

var selText = document.getSelection().toString(); 

La raison pour laquelle la chaîne montre avec succès dans l'alerte, est que la concaténation provoque une toString() implicite de se produire.

2

Les états MDN documentation.

Dans l'exemple ci-dessus, selObj est automatiquement "converti" lorsqu'il est passé à window.alert. Toutefois, pour utiliser une propriété JavaScript String ou une méthode telle que length ou substr, vous devez appeler manuellement la méthode toString.
- https://developer.mozilla.org/en/window.getSelection

Il est ce qui suggère que vous appelez document.getSelection().ToString().length;

+0

La fonction la documentation font référence à MDN est 'window.getSelection()', 'pas document.getSelection()', qui est pas universellement supporté et maintenant remplacé dans tous les navigateurs actuels par 'window.getSelection () '. En outre, c'est 'toString()' plutôt que 'ToString()'. –

0

méthode Obsolète document.getSelection() Utiliser window.getSelection().

var selText = window.getSelection().toString(); 
     if(selText) 
     { 
      alert("selected ->" + selText + " len is " + (selText.length - 1)); 
     } 
Questions connexes