gpt4 book ai didi

javascript - 无法使用 JS 函数生成树

转载 作者:行者123 更新时间:2023-12-03 03:18:46 25 4
gpt4 key购买 nike

为什么函数 buildTree 不迭代整个 xml?

下面是xml和JS的代码:

var response = "<scope><friend><name>Alex</name><hobbies><h>music</h><h>salsa</h></hobbies></friend><friend><name>Natasha</name><hobbies><h>hiking</h></hobbies></friend></scope>";

function buildTree(data) {
treePart = "";
treePart += "<ul>";
if (data.children.length != 0) {
for (i = 0; i < data.children.length; i++) {
treePart += "<li>" + data.children[i].tagName + "<span>[-]</span>";
treePart += buildTree(data.children[i]);
treePart += "</li>";
}
treePart += "</ul>";
}
else {
treePart += "<li>" + data.innerHTML + "</li>";
}
treePart += "</ul>";
return treePart;
}

parser = new DOMParser();
xml = parser.parseFromString(response, 'text/xml');

x = buildTree(xml);
document.getElementById('app').innerHTML = x;
<ul>
<div id="app"></div>
</ul>

从代码片段中可以看出,该节点没有显示。

<friend><name>Natasha</name><hobbies><h>hiking</h></hobbies></friend>

最佳答案

for (i = 0 ...
如果您不声明i使用“var”或“let”,它假定全局范围:
当它完成 h 的迭代时标签,i=2 ,所以当它返回迭代第二个 friend 时标签,i < data.children.length为 false,就到此为止。

var response = "<scope><friend><name>Alex</name><hobbies><h>music</h><h>salsa</h></hobbies></friend><friend><name>Natasha</name><hobbies><h>hiking</h></hobbies></friend></scope>";

function buildTree(data) {
treePart = "";
treePart += "<ul>";
if (data.children.length != 0) {
// Initialize i with "var" or "let"
for (var i = 0; i < data.children.length; i++) {
treePart += "<li>" + data.children[i].tagName + "<span>[-]</span>";
treePart += buildTree(data.children[i]);
treePart += "</li>";
}
// That's one too many </ul>
//treePart += "</ul>";
}
else {
treePart += "<li>" + data.innerHTML + "</li>";
}
treePart += "</ul>";
return treePart;
}

parser = new DOMParser();
xml = parser.parseFromString(response, 'text/xml');

x = buildTree(xml);
document.getElementById('app').innerHTML = x;
<ul>
<div id="app"></div>
</ul>

关于javascript - 无法使用 JS 函数生成树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46664120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com