2011-02-12 21 views
14

En la ventana emergente, selText tiene el valor "excelente", pero la longitud es siempre undefined. ¿Algo relacionado con la codificación de la cadena?¿por qué string.length return undefined?

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

Respuesta

24

Porque está obteniendo un objeto de selección DOM en lugar de un String. Para obtener el texto, llame al toString().

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

La razón por la cadena de muestra con éxito en la alerta, es que la concatenación causa una implícita toString() que se produzca.

2

estados MDN documentation.

En el ejemplo anterior, selObj es automáticamente "convertido" cuando se pasa a window.alert. Sin embargo, para usar una propiedad JavaScript String o el método , como longitud o substr, debe llamar manualmente al método toString .
- https://developer.mozilla.org/en/window.getSelection

Se sugiere que llame document.getSelection().ToString().length;

+0

La función de la documentación MDN referimos es 'window.getSelection()', 'no document.getSelection()', que no es universalmente compatible y ha sido sustituido en todos los navegadores actuales por 'window.getSelection () '. Además, es 'toString()' en lugar de 'ToString()'. –

0

desuso document.getSelection método() Probar Usar window.getSelection().

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