什么是此算法的非jquery等价(普通javascript)?

时间:2013-11-07 23:59:25

标签: javascript dom

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

2 个答案:

答案 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的正确方法。