Почему string.length возвращает undefined?
В всплывающем окне selText имеет значение "отлично", но длина всегда undefined
. Что-то связано с кодировкой строки?
var selText = document.getSelection(); //suppose "great" is selected
alert( "selected ->" + selText + " len is " + selText.length);
Ответы
Ответ 1
Потому что вы получаете объект выбора DOM вместо String. Чтобы получить текст, вызовите toString()
.
var selText = document.getSelection().toString();
Причина, по которой строка успешно отображается в предупреждении, заключается в том, что конкатенация вызывает неявный toString()
.
Ответ 2
Сообщается документация MDN.
В приведенном выше примере selObj является автоматически "конвертируется" при передаче to window.alert. Однако использовать Свойство или метод JavaScript String таких как длина или субстрат, вы должны вручную вызовите метод toString.
- https://developer.mozilla.org/en/window.getSelection
Предполагается, что вы вызываете document.getSelection().ToString().length;
Ответ 3
Устаревший метод document.getSelection() Попробуйте использовать window.getSelection().
var selText = window.getSelection().toString();
if(selText)
{
alert( "selected ->" + selText + " len is " + (selText.length - 1));
}