我正在制作文本编辑器,但是删除下划线功能不起作用。
工作代码示例:jsfiddle

这是给出问题的代码

else if (tag == "u") {
    sell = window.getSelection().getRangeAt(0);

    if (selectionIsUnderlined()) {
        node = range.createContextualFragment("<font style='text-decoration: none !important'>" + sell + "</font>");
    } else {
        node = range.createContextualFragment("<u>" + sell + "</u>");
    }

    range.deleteContents();
}


有任何想法吗?

最佳答案

好吧,删除下划线的问题是选择未考虑到包装的<u>元素。删除了<u>中的内容,并在<font>标记中插入了带有<u>标记的新内容。

我试图上一个节点并检查它是否为<u>,然后删除该节点:

if (selectionIsUnderlined()) {
    node = range.createContextualFragment(
           "<font style='text-decoration: none !important'>" + sell + "</font>");
    var nd = sel.anchorNode;
    if(nd.nodeName!=='span'){
        nd = nd.parentNode;
    }

    if (nd) {
        nd.remove();
    }


更新的小提琴是here

PS:这只是一个实验。在使用前,请考虑性能/浏览器兼容性以及其他优点/缺点。

关于javascript - 顽固的下划线将不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21713896/

10-16 14:30