【发布时间】:2019-06-04 15:07:43
【问题描述】:
我有一个包含以下内容的 JSON 文件。
{
"rooms":[
{
"id": "1",
"name": "living",
"Description": "The living room",
"backgroundpath":"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSrsU8tuZWySrSuRYdz72WWFiYaW5PCMIwPAPr_xAIqL-FgmQ4qRw",
"Settings": {
"Sources": [
{
"srcname":["DirectTV","AppleTV","Sonos"],
"iconpath":["src/assets/images/ThemeEditorImgLib_iTVLight5d3a46c1ad5d7796.png","path2"]
}
],
"hex": "#000"
}
},
{
"id": "2",
"name": "dining",
"Description": "The Dining room",
"backgroundpath":"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTjjspDkQEzbJJ1sSLS2ReWEx5P2ODNQmOtT572OIF9k3HbTGxV",
"Settings": {
"Sources": [
{
"srcname":["Climate","Shades"],
"iconpath":["path1","path2"]
}
],
"hex": "#000"
}
}
]
}
我的 HTML 文件有:
<div class="roww">
<div class="col-md-4 col-sm-6 col-12">
</div>
</div>
我想在 HTML 中显示我的 JSON 内容。 到目前为止,我已经尝试了以下方法。
private initTileGrid():void
{
var col = document.getElementsByClassName("roww")[0];
var outeritems=this.room_list.rooms;
// console.log(outeritems);
for(var i=0;i<outeritems.length;i++){
var tile = document.getElementsByClassName("col-md-4 col-sm-6 col-12 tile no-padding")[0];
var outerdiv = document.createElement("div");
var h5 = document.createElement("h5");
h5.innerHTML = outeritems[i].Description;
outerdiv.appendChild(h5);
var p = document.createElement("p");
p.innerHTML = outeritems[i].name;
outerdiv.appendChild(p);
// col.appendChild(outerdiv);
tile.appendChild(outerdiv);
var inneritem=outeritems[i].Settings.Sources.srcname;
console.log(inneritem);
var innerdiv = document.createElement("div");
for(var j=0;j<inneritem.length;j++)
{
console.log("hi")
var h5inner = document.createElement("h5");
h5inner.innerHTML = inneritem.srcname;
console.log(h5inner);
innerdiv.appendChild(h5inner);
}
tile.appendChild(innerdiv);
}
我能够显示来自 json 的描述和名称,但无法获取源列表。
我的最终解决方案应该是一个网格,其瓦片数量等于 JSON 中的对象数量,每个瓦片都有来自 json 及其内容的背景图像。
谁能告诉我哪里出错了? 任何帮助表示赞赏!
【问题讨论】:
-
对此进行了尝试,并意识到您在 JSON 中的
sources可能结构不正确。 JSON是你建的吗?你也在使用typescript吗?因为private initTileGrid():void也不对。sources是一个带有子数组的数组,但它最好作为一个object的数组 -
是的,JSON 是由我构建的,我使用 JSON 验证器在线检查我的 JSON,所以我认为它是正确的。是的,我正在使用打字稿,我正在研究 Angular。你能告诉我如何更好地构建它吗?
-
它是有效的 JSON。但是有效和最合适是不同的。要我在下面发布建议的更改吗?
-
是否也可以为每个 srcname 映射一个图标(来自 iconpath)?@Bibberty
-
@Bibberty 是的,这真的很有帮助,谢谢 :)
标签: javascript json angular dom