0
我有一個dom:<p><b>ABC</b>DEF<em>GHIK</em>
。現在我想分割成<p><b>ABC</b>DEF<em>G</em></p> <p><em>HIK</em></p>
。你們有什麼想法?如何將DOM對象拆分爲2
我有一個dom:<p><b>ABC</b>DEF<em>GHIK</em>
。現在我想分割成<p><b>ABC</b>DEF<em>G</em></p> <p><em>HIK</em></p>
。你們有什麼想法?如何將DOM對象拆分爲2
我發現了一種使用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();
}
}
定義拆分字符串的標準。 – Tushar
鑑於dom對象,我想將它分成2段,但仍然保持其格式。這就像在contenteditable div中的段落中間按Enter鍵。 –
是的,我明白了,但是如果你只是想分割,爲什麼不分割'ABC'就像'AB'和'C' – Tushar