#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 было бы неплохо, если бы вы отметили мой ответ как лучший 🙂