Как удалить выделенные слова в тексте?

#javascript #html #jquery #arrays #if-statement

#javascript #HTML #jquery #массивы #if-оператор

Вопрос:

Этот код выбирает слова и создает из них массив. Но мне нужно удалить слова после выбора и добавления в массив. Я думаю, что мне нужно работать либо с document.getSelection(), либо с document.selection , но я не знаю, как удалить выбранные слова через них. Я был бы рад, если бы кто-нибудь дал мне подсказку.

 <script>
let container;
var arr = [];
function get_selection() {
  
    var txt = '';
       if (document.getSelection) {
          txt = document.getSelection().toString();
                
                
            } 

            else if (document.selection) {
                txt = document.selection.createRange().text;
            }
             arr.push(txt);
            }
            }
           document.getElementById("txt").onclick = get_selection;

</script>
  

Комментарии:

1. эти слова / текст находятся в текстовой области?

2. Это может быть текстовое поле, но я использую div contenteditable .

Ответ №1:

Вы можете использовать событие onselect . для элемента или просто глобального, но тогда вы должны выяснить, что ваша цель не является, например. элемент меню: P. Затем вы можете использовать textContent, если вы используете contenteditable и просто значение подстроки перед выделением и после него и устанавливаете значение содержимого в его сумму. Я использую textarea, использование contenteditable в большинстве случаев не является лучшей практикой.

 const selections = []

const handleOnSelect = (e) =>{
  const target = e.target;
  const start = target.selectionStart;
  const end = target.selectionEnd;
  const selection = target.value.substring(start, end);
  selections.push(selection);
  const pre = target.value.substring(0 , start);
  const post = target.value.substring(end);
  target.value = pre   post;
  
  console.log(selections)
}


window.addEventListener("load", ()=>{
   const target = document.getElementById("txt")
   target.addEventListener("select", handleOnSelect);
})  
 <textarea id="txt"> </textarea>  

Комментарии:

1. @NikN было бы неплохо, если бы вы отметили мой ответ как лучший 🙂