【问题标题】:How to remove span with class name around selected text in javascript如何在javascript中删除所选文本周围的类名跨度
【发布时间】:2017-04-14 13:49:53
【问题描述】:

我正在使用 javascript 突出显示选定的文本并在用户需要时删除选定的文本。
我几乎完成了所有工作,但是在删除所选文本的样式时我被卡住了。
我想删除所选文本周围类名highlight 的跨度,但不删除所选文本中已经可用的其他样式。

这里是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);
  }
}

删除选定文本周围突出显示的跨度的正确方法是什么?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你可以使用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");
    }
    

    【讨论】:

    • 我不想只删除类名,我想删除文本周围的 span 标签
    • 我能问一下您为什么有这样的特殊要求吗?
    • 一次我只需要删除一个亮点。在您的方法上方删除所有跨度的样式。在这里我无法获得要删除的突出显示用户。我这里只有范围对象
    • @GiteshPurbia 我的方法只从span 元素中删除highlight 类。任何其他样式保持不变。
    • 我有一个范围对象,但在获取类名突出显示的跨度时遇到问题。你可以看到演示我到底面临什么问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 2011-04-28
    • 2020-08-18
    • 2019-11-25
    相关资源
    最近更新 更多