如何从 JavaScript 对象呈现 HTML 中的嵌套列表?
Posted
技术标签:
【中文标题】如何从 JavaScript 对象呈现 HTML 中的嵌套列表?【英文标题】:How to render nested list in HTML from JavaScript object? 【发布时间】:2018-05-27 19:49:39 【问题描述】:我有一个对象,看起来像这样:
let obj =
name: "name1",
nest: [
name: "name2",
nest: [
name: "name3"
,
name: "name4",
nest: [
name: "name5",
nest: [
name: "name6"
]
,
name: "name7"
,
name: "name8"
]
]
]
let parent = document.querySelector("ul");
function forOf (obj)
for (let key in obj)
if ( typeof obj[key] === "object" && obj.hasOwnProperty("nest") )
createList(obj[name], obj[key]);
else if ( typeof obj[key] !== "object" )
let item = document.createElement("li");
item.textContent = obj[key];
parent.appendChild(item);
else
forOf(obj[key]);
function createList(obj, skills)
let item = document.createElement("ul");
item.textContent = obj;
parent.appendChild(item);
parent = item;
forOf(skills);
forOf(obj);
我需要渲染嵌套无序列表的树。我解析了我的对象,但我无法以正确的方式呈现它。我无法解决每个嵌套列表的父项问题。也许,您有什么解决方法的想法吗?
我想得到这样的结果:example
【问题讨论】:
请更具体地说明您想要的行为、与您获得的行为有何不同以及您迄今为止尝试过的行为。 是的,当然:期望的行为是嵌套列表的正确呈现,具有不同的嵌套级别。像这样:i.stack.imgur.com/bjuI6.png 【参考方案1】:您可以使用单个循环,其中仅定义值的键并将嵌套数组作为子数组。
function createList(parent, array)
array.forEach(function (o)
var li = document.createElement("li"),
ul;
li.textContent = o.name;
parent.appendChild(li);
if (o.nest)
ul = document.createElement("ul");
li.appendChild(ul);
createList(ul, o.nest);
);
var object = name: "name1", nest: [ name: "name2", nest: [ name: "name3" , name: "name4", nest: [ name: "name5", nest: [ name: "name6" ] , name: "name7" , name: "name8" ] ] ]
createList(document.querySelector("ul"), [object]);
<ul></ul>
【讨论】:
以上是关于如何从 JavaScript 对象呈现 HTML 中的嵌套列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何将此 javascript 和 HTML 代码添加到 Angular 项目中?我可以从 javascript 函数中以角度呈现 html 吗?
无论如何都可以获得任何网站的完整呈现的 HTML 代码(包括 JavaScript 代码)?
用于呈现 HTML 和 javascript 的 Python 库 [关闭]
尽管我从 API 获取数据,但我在 HTML 页面中的 Javascript JSON 代码不会呈现 RESTful API 数组对象。我该怎么办?