答案jQuery - wrap all unwrapped text in p tags提供了一个 jquery 解决方案,它用 html 标签包装所有文本节点。我想知道如何在没有 jquery 的情况下做到这一点(如果可能的话)。
问问题
102 次
2 回答
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 循环是否会跳过文档中的第一个文本节点。你只需要尝试一下。
于 2013-11-08T00:15:40.480 回答
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 的正确方法。
于 2013-11-08T00:23:57.050 回答