使用JSON和jquery创建一个动态列表

Create a dynamic list using JSON and jquery

本文关键字:一个 动态 列表 JSON jquery 创建 使用      更新时间:2023-09-26

JSON文件

{
"subject": "title",
"level": [
 {
  "title":"Test1",
  "sub":[{
   "title":"Test1 sub_1",
   "links":[{
    "title":"Test1sub1.1link_title",
    "address":"linkAddress"
    },{
    "title":"Test1sub1.2_link_title",
    "address":"linkAddress"
    }
   ] 
  },{
   "title":"Test2 sub_2",
   "links":[{
    "title":"Test2sub2.1_link_title",
    "address":"linkAddress"
    },{
    "title":"Test2sub2.2_link_title",
    "address":"linkAddress"
    }
   ]
  }]  
 },
 {
  "title":"Test3",
  "sub":[{
   "title":"Test3 sub_1",
   "links":[{
    "title":"Test31.1_link_title",
    "address":"linkAddress"
    },{
    "title":"Test31.2_link_title",
    "address":"linkAddress"
    }
   ] 
  }]
 }
 ]
}

在我的标记中,我有以下

var json = $.getJSON('datar.json',function(data){
 for(var i =0; i< data.level.length; i++){
   console.log(data.level[i].title);
   $('#accordion').append("<li>"+data.level[i].title+"</li>");
   for (var k = 0; k<data.level[i].sub.length; k++){
    console.log(data.level[i].sub[k].title);
    $('#accordion').append("<li>"+data.level[i].sub[k].title+"</li>");
    for (var j = 0; j<data.level[i].sub[k].links.length; j++){
     console.log(data.level[i].sub[k].links[j].title);
     $('#accordion').append("<li>"+data.level[0].sub[j].links[i].title+"</li>");
    }
   }
  } 

正如我们所看到的,我正在循环并追加以创建动态列表。在我的console.log输出中,我收到了我需要的正确格式。

Test1
Test1 sub_1
Test1sub1.1link_title
Test1sub1.2_link_title
Test2 sub_2
Test2sub2.1_link_title
Test2sub2.2_link_title
Test3
Test3 sub_1
Test31.1_link_title
Test31.2_link_title 

但在页面本身,它没有正确显示,

Test1
Test1 sub_1
Test1sub1.1link_title
Test2sub2.1_link_title
Test2 sub_2
Test1sub1.1link_title
Test2sub2.1_link_title
Test3
Test3 sub_1
Test1sub1.2_link_title
Test2sub2.2_link_title

如果有人能提供建议,我们将不胜感激。

看看最后一个for循环:

console.log(data.level[**i**].sub[**k**].links[**j**].title);
$('#accordion')
   .append("<li>"+data.level[**0**].sub[**j**].links[**i**].title+"</li>");

=>console.log和append 之间的索引元素不同