2017-04-14 69 views
0

我正在使用JavaScript來突出顯示所選文本,並在用戶需要時刪除所選文本。
我已經差不多完成了所有工作,但是在刪除所選文本的樣式時,我停滯不前。
我想刪除類名爲highlight的範圍,但不會刪除選定文本中已有的其他樣式。如何在javascript中選定的文本週圍刪除類名稱的範圍

這裏是the plunk I've made

function removeHighlight() { 
    var sel = window.getSelection(); 
    if (sel.rangeCount > 0) { 
    var range = sel.getRangeAt(0); 
    var selectedTextNode = document.createTextNode(range.toString()); 
    console.log(selectedTextNode); 
    range.deleteContents(); 
    range.insertNode(selectedTextNode); 
    range.selectNode(selectedTextNode); 
    sel.removeAllRanges(); 
    sel.addRange(range); 
    } 
} 

什麼是去除突出跨度圍繞所選文本的正確方法?

回答

0

可以使用classList屬性的remove方法:

// Get all the spans that have the highlight class 
var spans = document.querySelectorAll("span.highlight"); 

// Loop over the spans and remove the classs 
for(var i = 0; i < spans.length; i++){ 
    spans[i].classList.remove("highlight"); 
} 
+0

我dont't只想刪除類名,我想刪除文字周圍span標記 –

+0

我可以問你爲什麼有特殊要求? –

+0

,有一次我只能刪除一個亮點。在你的方法之上刪除所有範圍的樣式。在這裏我無法得到哪個高亮用戶想要刪除。我在這裏只有範圍對象 –