Tôi có một nút đánh dấu trên UI, nhấp vào đó, bất kỳ lựa chọn người dùng nào được đánh dấu màu đỏ. Không có vấn đề ở đây. Tôi đạt được điều này bằng cáchdocument.execCommand("insertHTML")
Nhưng tôi có một yêu cầu bổ sung rằng nếu lựa chọn mới được tạo là giao điểm của các đánh dấu lựa chọn cũ, thì dấu đỏ của lựa chọn cũ sẽ biến mất.
Ví dụ:
Trong hình ảnh sau đây: điều này và thử nghiệm được đánh dấu. Bây giờ nếu tôi chọn dấu của anh ấy từ dấu bắt đầu và dấu nhấp chuột, các dấu cũ của việc này và kiểm tra sẽ biến mất và chỉ có dấu của anh ấy là được đánh dấu vì có một giao lộ.
mã:
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>
