Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环对象和顺序子值_Javascript_Mysql_Loops_Assign - Fatal编程技术网

Javascript 循环对象和顺序子值

Javascript 循环对象和顺序子值,javascript,mysql,loops,assign,Javascript,Mysql,Loops,Assign,首先: 我在MYSQL中创建了一个论坛结构: 表:[boards]->id、母版、标题、说明 简单又好 这是数据库响应: [{"id":1,"parent_board":0,"title":"Lorem 1","description":"ec40db959345153a9912"}, {"id":2,"parent_board":0,"title":"Lorem 2","description":"bb698136a211ebb1dfedb"}, {"id":3,"parent_board":

首先:

我在MYSQL中创建了一个论坛结构:

表:
[boards]
->id、母版、标题、说明

简单又好

这是数据库响应:

[{"id":1,"parent_board":0,"title":"Lorem 1","description":"ec40db959345153a9912"},
{"id":2,"parent_board":0,"title":"Lorem 2","description":"bb698136a211ebb1dfedb"},
{"id":3,"parent_board":1,"title":"Lorem 1-1","description":"6062bc28a9f781e06417d"}]
正如您所看到的,板id 3板id 1的子板,因为其
父板
值设置为1

我希望收到以下输出:

  • 洛雷姆1
    • 洛雷姆1-1
  • 洛雷姆2
但这是我的结果:

  • 洛雷姆1
  • 洛雷姆2
    • 洛雷姆1-1
如何循环此对象,使子板(板3)位于板1下方

我使用
  • 标签

    这是我的密码:

    var html = "</ul>";
    
    for(var i = 0; i < boards.length; i++){
    
        if(boards[i].parent_board == 0){
    
            html += "<li>" + boards[i].title + "</li>";
    
        }else{
    
            html += "<ul>";
    
            html += "<li>" + boards[i].title + "</li>";
    
            html += "</ul>";
        }
    
    }
    
    var html=“”;
    对于(变量i=0;i”+板[i]。标题+””;
    }否则{
    html+=“
      ”; html+=“
    • ”+板[i]。标题+”
    • ”; html+=“
    ”; } }
    我会在每个板的
  • 上放置一个ID属性。然后,每当我遍历一个子板时,我只是将新项作为父项的子项附加到匹配id中,要做到这一点,您必须在遇到它们时创建每个元素并将其添加到文档中,而不是首先将它们存储在字符串中

    var htmlElem = document.getElementById('htmlElemId');
    htmlElem.innerHTML = "";
    
    for(var i = 0; i < boards.length; i++){
      if(boards[i].parent_board == 0){
        htmlElem.innerHTML += "<li id='" + boards[i].id + "'>" + boards[i].title + "</li>";
      }else{
        var parent = document.getElementById(boards[i].parent_board);
        if (parent){
          parent.innerHTML += "<ul><li id='" + boards[i].id + "'>" + boards[i].title + "</li></ul>";
        }
      }
    }
    
    var htmlElem=document.getElementById('htmlElemId');
    htmlElem.innerHTML=“”;
    对于(变量i=0;i”+boards[i].title+“”;
    }否则{
    var parent=document.getElementById(boards[i].parent\u board);
    如果(家长){
    parent.innerHTML+=“
    • ”+boards[i]。title+”
      • ”; } } }
    将“htmlemid”替换为容器元素的实际id,并确保其类型为

    <>编辑:你可能还想考虑在你的ID中使用某种前缀,所以你不只是使用与其他地方“/P>”冲突的普通数字。
    "<li id='SomePrefix-" + boards[i].id + "'>" + boards[i].title + "</li>"
    
    var parent = document.getElementById("SomePrefix-" + boards[i].parent_board);
    
  • “+boards[i].title+”
  • ” var parent=document.getElementById(“SomePrefix-”+boards[i]。parent\u board);

    EDIT2:下面是一个

    演示如何将平面数组转换为层次对象。它应该是相对简单的,以适应打印嵌套列表。这看起来很好巴尔马,谢谢你!你是我的好朋友。结果是:非常感谢!