У меня есть кнопка пометки на пользовательском интерфейсе, нажав на которую, любой выбранный пользователем отмечен красным. Здесь нет проблем. Я достигаю этогоdocument.execCommand("insertHTML")
Но у меня есть дополнительное требование, что если создается новый выбор, который является пересечением старых отметок выбора, красная отметка старого выделения должна исчезнуть.
Например:
На следующем рисунке: это и тестирование помечены. Теперь, если я выберу его тесты в начале и отметку клика, старые отметки этого и тестирование должны исчезнуть, и только его тесты должны быть отмечены, потому что есть пересечение.
код:
const button = document.getElementById("button");
button.addEventListener('click', ()=>{
const s = window.getSelection();
const selectionStr = s.toString();
document.execCommand("insertHTML", false, `<span class="bg-red">${selectionStr}<span>`);
})
.bg-red {
background: red;
}
<div contenteditable="true">
this is testing this is testing this is testing
</div>
<button id="button">mark</button>
источник