我有一个递归函数,但它似乎不适用于多个级别,这应该引起递归。有什么想法我要去哪里吗?
function productData(elem) {
console.log("elem 1", elem)
if (elem[0]) {
if (elem[0].hasChildNodes()) {
elem[0].childNodes.forEach(function (item) {
console.log("item", item)
console.log("item", item.childNodes)
productData(item);
});
}
}
}
const product = document.querySelectorAll('[itemtype="http://schema.org/Product"]');
productData(product)
答案 0 :(得分:0)
如果我选择html标记并通过它运行代码,则它会吐出子节点。
var productData = function(elem) {
console.log("elem 1", elem)
if (elem[0]) {
if (elem[0].hasChildNodes()) {
elem[0].childNodes.forEach(function (item) {
console.log("item", item)
console.log("item", item.childNodes)
productData(item);
});
}
}
}
productData(document.querySelectorAll('html'));
您有您要阅读的HTML页面示例吗?也许您选择的元素实际上没有子节点。
此外,您要具体做什么?这几乎看起来像是广度优先的搜索问题。
答案 1 :(得分:0)
我删除了elem
上的数组索引访问,因为在forEach循环中,只有一项通过。
function productData(elem) {
console.log("elem 1", elem)
if (elem) {
if (elem.hasChildNodes()) {
elem.childNodes.forEach(function (item) {
console.log("item", item)
console.log("item", item.childNodes)
productData(item);
});
}
}
}