用d3读取json子节点
Read json children nodes with d3
需要一些帮助读取json数据与d3。这是json
{
"name": "Main Course",
"children": [
{
"name": "Chinese",
"children": [
{"name": "Noodles"},
{"name": "Rice"},
{"name": "Xinjiang Roast"}
]
},
{
"name": "Indian",
"children": [
{"name": "Rice"},
{"name": "Paratha"},
{"name": "Dal Fry"}
]
}
]
}
我想从这些数据中创建一个列表,如下所示,
<ul>
<li>Main Course</li>
<ul>
<li>Chinese</li>
<ul>
<li>Noodles</li>
<li>Rice</li>
<li>Xinjiang Roast</li>
</ul>
<li>Indian</li>
<ul>
<li>Rice</li>
<li>Paratha</li>
<li>Dal Fry</li>
</ul>
</ul>
</ul>
这就是我被卡住的地方,
d3.select("body")
.append("ul")
.selectAll("li")
.data(data)
.enter()
.append("li")
.attr("id","mylist")
.text(function (d) {
return d.name;
})
d3.select("#mylist")
.append("ul")
.selectAll("li")
.data(data)
.enter()
.append("li")
.text(function (d) {
return d.children[0].name;
})
}
它给出了下面的结果,
<ul>
<li id="mylist">Main Course<ul>
<li>Chinese</li>
</ul>
</li>
</ul>
我想我面临的问题是试图得到孩子的数据/节点。我尝试使用索引像儿童[I],但得到未定义的错误。如何正确地循环遍历所有子节点并将其附加到嵌套到父节点的列表中?
我真的不认为需要使用d3。
试试这个:
function makeMenu(jsonObj, container) {
container = container || document.body;
var ul = document.createElement('ul');
var li = document.createElement('li');
li.innerHTML = jsonObj.name;
ul.appendChild(li);
container.appendChild(ul);
if(jsonObj.children) {
for(var i=0; i<jsonObj.children.length; i++) {
li = document.createElement('li');
makeMenu(jsonObj.children[i], li);
ul.appendChild(li);
}
}
}
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 设置拖放子节点以在表中显示 JSON 数组
- 使用 jQuery 解析 JSON 子节点
- 如何在 JSON 中同时检查响应及其子节点是否存在
- 从 JSON 中删除子节点
- Json - 检查子节点空值
- 您将如何将 JSONPath 发送到 JSON 对象数组中的所有子节点
- 通过变量- JSON2HTML访问JSON子节点
- 如何使用" jstreet "附加json变量作为子节点Jquery插件-没有ajax
- 在JSON中向根节点及其所有子节点附加键值
- 在点击父节点(json)后加载子节点
- 从json中获取所有子节点
- 如何给子节点一个'id'在jtree中使用JSON
- 用d3读取json子节点
- 如何递归通过子节点和输出json