我制作一个网页的htmlparse,我得到了一个带有这个块的页面的DOM:
{ raw: 'td',
data: 'td',
type: 'tag',
name: 'td',
children: [ { raw: '600', data: '600', type: 'text' } ] },
如何删除该htmlparse的所有类型“text”? 感谢。
答案 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;