答案jQuery - wrap all unwrapped text in p tags提供了一个jquery解决方案,它使用html标记包装所有文本节点。我想知道如何在没有jquery的情况下完成它(如果可能的话)。
答案 0 :(得分:1)
这是一种方式:
var walker=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT,null,false);
while(walker.nextNode()){
var newNode=document.createNode('p');
newNode.textConTent=walker.currentNode.textContent;
walker.currentNode.parentNode.replaceChild(newNode,walker.currentNode);
}
我还没有测试过,我之前从未使用treeWalker
,但我认为这应该可以正常工作。但是,我不确定while循环是否可以跳过文档中的第一个文本节点。你只需要尝试。
答案 1 :(得分:1)
你走了: http://jsfiddle.net/reWXX/14/
var textnodes = getTextNodesIn(document.getElementById('demo'));
for(var i=0; i < textnodes.length; i++){
if (textnodes[i].parentElement.id === 'demo') { // This is redundant
var newNode = document.createElement('p');
newNode.textContent = textnodes[i].nodeValue;
textnodes[i].parentNode.replaceChild(newNode, textnodes[i]);
}
}
这是一般的JavaScript。但是,如果Markasoftware工作,恕我直言,这将是一个使用TreeWalker的正确方法。