【问题标题】:Insert Object data in HTML [duplicate]在 HTML 中插入对象数据 [重复]
【发布时间】:2014-12-27 20:37:51
【问题描述】:

如何在 HTML 中列出 Javascript 对象的结构化内容?

我的对象如下所示:

var lists = {
"Cars":{"Ford":false,"Ferarri":false},
"Names":{"John":true,"Harry":false},
"Homework":{"Maths":true,"Science":false,"History":true,"English":true}
}

将键打印为标题,将属性 + 值打印为下面的有序列表,循环会是什么样子?

例子:

汽车

  1. 福特 = 假
  2. 法拉利 = 假

名字

  1. 约翰 = 真
  2. 哈利 = 假

家庭作业

  1. 数学 = 真
  2. 科学 = 错误
  3. 历史 = 真
  4. 英语 = 真

我知道我可以按名称将对象附加到 HTML,但如果对象是动态的,并且密钥未知,我该如何创建循环来执行此操作?

【问题讨论】:

  • @Quentin:这个问题不仅是关于循环遍历一个对象,也是关于将元素附加到 HTML
  • @Cerbrus — 问题的最后一段说附加到 HTML 部分已经排序。如果这不是 OP 想要说的,那么问题就太宽泛了。
  • @Quentin:哦,你说得对。没关系我说什么:-)
  • @tymeJV:不要因为你想回答问题就滥用你的 JS 金徽章-.-
  • @Cerbrus -- 好吧,我确实根据您最初的评论重新打开它,假设我应该阅读更多内容:\

标签: javascript html json


【解决方案1】:

只需循环,创建 HTML 字符串,然后追加!假设你有一个容器:

<div id="container"></div>

还有你的 JS

var htmlString = "";
for (var key in lists) {
    htmlString += "<span>" + key + "</span>";
    htmlString += "<ul>";
    for (var item in lists[key]) {
        htmlString += "<li>" + item + " = " + lists[key][item] + "</li>";
    }
    htmlString += "</ul>";
}

document.getElementById("container").innerHTML = htmlString;

工作演示:http://jsfiddle.net/owqt5obp/

【讨论】:

  • 它适用于示例,因此 +1,为了安全起见,该值应该被转义。
  • @MauricePerry -- 你是什么意思?
  • 感谢@tymeJV 没有考虑循环内的循环!
  • @tymeJV:字符串可能包含特殊字符,例如
  • @tymeJV 在这种情况下可以使用“.append”吗?
猜你喜欢
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
相关资源
最近更新 更多