Почему 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));
        }