如何删除htmlparse的一部分?

时间:2015-05-23 15:22:16

标签: javascript node.js dom html-parsing html-parser

我制作一个网页的htmlparse,我得到了一个带有这个块的页面的DOM:

 { raw: 'td',
   data: 'td',
   type: 'tag',
   name: 'td',
   children: [ { raw: '600', data: '600', type: 'text' } ] },

如何删除该htmlparse的所有类型“text”? 感谢。

2 个答案:

答案 0 :(得分:2)

如果要以递归方式删除所有文本节点,可以这样做:

var _ = require('underscore');
var deleteText = function(node) {
    if (!node.children || node.children.length === 0) {
        return;
    }

    // Exclude text nodes
    node.children = _.filter(node.children, function(child) {
        return child.type !== 'text';
    });

    // Recurse over child nodes
    _.each(node.children, deleteText);
};

deleteTextNodes(parsed);

答案 1 :(得分:1)

如果要删除任何具有文本类型的子项,只需遍历所有子项并使用array.splice删除带有文本类型的子项。



var output = document.getElementById('output'),
    htmlParse = { raw: 'td',
                     data: 'td',
                     type: 'tag',
                     name: 'td',
                     children: [
                       { raw: '600', data: '600', type: 'text' },
                       { raw: '100', data: '100', type: 'num' }
                     ] 
                    };

for(var i = 0; i < htmlParse.children.length; i++) {
  if (htmlParse.children[i].type === "text") {
    htmlParse.children.splice(i, 1);
  } 
}
output.innerHTML = JSON.stringify(htmlParse);
console.log(htmlParse);
&#13;
<div id="output"></div>
&#13;
&#13;
&#13;