如何删除一部分htmlparse?
How to delete a part of the htmlparse?
我制作了一个网页的 htmlparse,我得到了一个包含以下块的页面的 DOM:
{ raw: 'td',
data: 'td',
type: 'tag',
name: 'td',
children: [ { raw: '600', data: '600', type: 'text' } ] },
如何删除该 htmlparse 的所有类型 "text"?
谢谢
如果您想删除任何带有文本类型的子项,只需遍历所有子项并使用 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);
<div id="output"></div>
如果你想递归地删除所有文本节点,你可以这样做:
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);
我制作了一个网页的 htmlparse,我得到了一个包含以下块的页面的 DOM:
{ raw: 'td',
data: 'td',
type: 'tag',
name: 'td',
children: [ { raw: '600', data: '600', type: 'text' } ] },
如何删除该 htmlparse 的所有类型 "text"? 谢谢
如果您想删除任何带有文本类型的子项,只需遍历所有子项并使用 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);
<div id="output"></div>
如果你想递归地删除所有文本节点,你可以这样做:
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);