#javascript #html #reactjs
Вопрос:
У меня есть следующий сценарий: содержимое отображается в div. Пользователи могут выбирать слова из этого контента. Я выбираю выбор пользователя с помощью window.getselection().tostring()
метода.
Теперь мне нужно расположение выбранного содержимого внутри span
/ div
.
Например. У родителя div
есть содержимое, подобное этому:
lt;spangt;abc xyz abclt;/spangt; lt;divgt;abc xyz abclt;/divgt; lt;spangt;abc xyz abclt;/spangt;
Итак, если я выберу 1-ю азбуку из 1-го пролета, или я выберу 2-ю азбуку в 1-м пролете, или я выберу abc abc из 1-го пролета и второго div, то какой будет лучший способ выделить выбранную часть.
Заранее спасибо
Ответ №1:
Как нижеприведенное решение может быть полезным
var selection = window.getSelection(); var range = selection.getRangeAt(0); var newNode = document.createElement("span"); newNode.setAttribute("style", "background-color: pink;"); range.surroundContents(newNode);
Комментарии:
1. Будет ли это работать с содержимым в 2 отдельных промежутках/div?
Ответ №2:
это очень хорошо работает для меня :
import React, {useEffect, useRef} from 'react'; const App = () =gt; { const spanInput=useRef(); useEffect(()=gt;{ console.log(spanInput.current.innerHTML) },[spanInput]) return ( lt;divgt; lt;span ref={spanInput}gt;test textlt;/spangt; lt;/divgt; ); }; export default App;
Комментарии:
1. Это не сработает, так как я не могу добавить ссылку на каждого дочернего элемента div и потому, что они поступают из вызова api. А также div находится в iframe
2. Также я думаю, что это просто регистрирует html ссылки. Я хочу выделить выбранное содержимое