Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2022, 11:25
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 137

Как использовать getElementsByClassName при выделении TextRange?
Здравствуйте, читаю статью https://learn.javascript.ru/range-textrange-selection. Здесь приведены несколько примеров использование Range и TextRange. В основном все примеры связаны с getElementById. Как использовать getElementByClassName.

Вот так работает.
var target = document.getElementById('ex5').getElementsByTagName('span')[0];

а так нет.
var target = document.getElementsByClassName('fr-element fr-view').getElementsByTagName('span')[0];


Полностью пример:
<!DOCTYPE HTML>
<html>

<head>
  <meta charset="utf-8">
</head>

<body>
<div class="fr-element fr-view" style="min-height: 350px;"> 
Снова будем выделять <span>бабулю</span>, на этот раз без поиска.
</div>
<div id="ex5" style="border:1px dashed #999; color:#666; background:#EEE; padding:2px 5px; margin:10px 0;">
   Снова будем выделять <span>бабулю</span>, на этот раз без поиска.
  </div> 
  <div>
    <input onclick="setSelection()" type="button" value="Выделить бабулю">
  </div>
  <script>
 // 
  
  
    function setSelection() {
       var target = document.getElementById('ex5').getElementsByTagName('span')[0];
      ///var target = document.getElementsByClassName('fr-element fr-view').getElementsByTagName('span')[0];
      //document.getElementByClassName('fr-element fr-view');
      var rng, sel;
      if (document.createRange) {
        rng = document.createRange();
        rng.selectNode(target)
        sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(rng);
        console.log(rng);
      } else {
        var rng = document.body.createTextRange();
        rng.moveToElementText(target);
        rng.select();
      }
    }
  </script>


</body>

</html>
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2022, 11:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от Katy93
Вот так работает.
так и пишите так же.
var target = document.getElementsByClassName('fr-element fr-view')[0].getElementsByTagName('span')[0];
или так
var target = document.querySelector('.fr-element.fr-view > span');
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2022, 11:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,137

Сообщение от Katy93 Посмотреть сообщение
Вот так работает.
var target = document.getElementById('ex5').getElementsByTagName('span')[0];

а так нет.
var target = document.getElementsByClassName('fr-element fr-view').getElementsByTagName('span')[0];
document.getElementsByClassName()

Возвращает целую коллекцию элементов. Для работы с ней нужно использовать циклы.
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2022, 11:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,137

Katy93, как вариант использовать другой метод получения элементов...
const target = document.querySelector('.fr-element fr-view span')

или
const target = document.querySelectorAll('.fr-element fr-view span')
Ответить с цитированием
  #5 (permalink)  
Старый 21.03.2022, 12:57
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 137

Спасибо, получилось.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать перезагрузку скриптов/функций при подгрузке контента с помощью AJAX? yii2 jQuery 2 27.09.2017 19:48
Как использовать fontawesome как обычный шрифт? sovsem-nub Элементы интерфейса 2 07.01.2017 21:25
Как избежать полосы прокрутки при анимации Bizon4ik Общие вопросы Javascript 4 21.06.2014 13:51
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как задать изменение src при прокрутке chandler Элементы интерфейса 3 12.01.2012 01:23