簡體   English   中英

如何將DOM對象拆分為2

[英]How to split a DOM object into 2

我有一個dom: <p><b>ABC</b>DEF<em>GHIK</em> 現在,我想將其拆分為<p><b>ABC</b>DEF<em>G</em></p> <p><em>HIK</em></p> 你們有什么想法嗎?

我發現使用rangy的可行方法。 Rangy具有強大的功能:extractContents(從范圍中提取內容)。 所以這里的解決方案:

node(p).split( p.querySelector('em').firstChild, 2); // <p>012<em>abc</em>345</p>

function node(node){
    var _node = node;
    return{
        split: split

    }
    function split(node, offset){
        var blockL = document.createElement(_node.nodeName),
            blockR = document.createElement(_node.nodeName);

        var rangeL = rangy.createRange();
        rangeL.setStart(_node.firstChild, 0);
        rangeL.setEnd(node, offset);

        var rangeR = rangy.createRange();
        rangeR.setStart(node, offset);
        rangeR.setEnd(_node.lastChild, rangy.dom.getNodeLength(_node.lastChild));

        var contentL = rangeL.extractContents(),
            contentR = rangeR.extractContents();

        while(contentL.firstChild) blockL.appendChild(contentL.firstChild);
        while(contentR.firstChild) blockR.appendChild(contentR.firstChild);

        _node.parentNode.insertBefore(blockL, _node);
        _node.parentNode.insertBefore(blockR, _node);

        _node.remove();

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM