-4

答案jQuery - wrap all unwrapped text in p tags提供了一个 jquery 解决方案,它用 html 标签包装所有文本节点。我想知道如何在没有 jquery 的情况下做到这一点(如果可能的话)。

4

2 回答 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 回答