【发布时间】:2015-07-18 20:48:33
【问题描述】:
我有一个数组数组:
var json = {
"music": {
"albums": [{
"name": "foo",
"tracks": [{
"name": "foo",
"ref": "1"
}, {
"name": "bar",
"ref": "2"
}, {
"name": "foobar",
"ref": "3"
}]
}, {
"name": "bar",
"tracks": [{
"name": "f",
"ref": "1"
}, {
"name": "oo",
"ref": "2"
}, {
"name": "bar",
"ref": "3"
}]
}]
}
};
如您所见,album 是一个包含两个数组和一个name 属性的数组。专辑中的数组称为tracks,其中包含显示在 dom 上的专辑中的曲目。
我想做的是用jquery修改dom,如下所示:
var gridListMusic = $('#grid-listMusic');
var gridListMusicList = $('#grid-listMusic ul');
function createAlbumSection(id) {
gridListMusic.append('<div>' + id + '</div>');
gridListMusic.append('<div class="grid-container">' + '<ul>' + '</ul>' + '</div');
$.each(json.music.albums.tracks, function (index, value) {
gridListMusicList.append('<li>' + value.name + '</li>');
});
}
function jsonDo(data) {
$.each(data.music.albums, function (index, value) {
alert(value.name);
if (typeof data.music.albums !== 'undefined') {
createAlbumSection(value.name);
}
});
}
这应该会像这样将 div 和 uls 插入到 DOM 中:
<div>foo</div>
<div class="grid-container">
<ul>
<li>foo</li>
<li>bar</li>
<li>foobar</li>
</ul>
</div>
<div>bar</div>
<div class="grid-container">
<ul>
<li>f</li>
<li>oo</li>
<li>bar</li>
</ul>
</div>
但是,当我的控制台尝试在 <ul> 中插入 tracks 时,我会在控制台中收到此错误:
未捕获的类型错误:无法读取未定义的属性“专辑”
【问题讨论】:
-
albums是一个数组。它没有属性tracks。
标签: javascript jquery arrays dom