Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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/Jquery遍历无序列表_Javascript_Jquery_List_Traversal - Fatal编程技术网

使用Javascript/Jquery遍历无序列表

使用Javascript/Jquery遍历无序列表,javascript,jquery,list,traversal,Javascript,Jquery,List,Traversal,假设我有一个无序的嵌套列表: 项目a1 项目a2 项目a3 项目b1 项目b2 项目b3 项目c1 项目c2 第c3项 项目b4 项目a4 我需要遍历它并将其保存在二维数组中(最终我只是尝试将其转换为JSON实体),我可以同时使用Jquery和/或Javascript。我应该如何进行 谢谢函数遍历(ul) { 对于(var指数=0;index0){ 遍历(ul.childNodes[index]); } //执行其他操作 } } 函数遍历(ul) { 对于(var指数=0;inde

假设我有一个无序的嵌套列表:

  • 项目a1
  • 项目a2
  • 项目a3
    • 项目b1
    • 项目b2
    • 项目b3
      • 项目c1
      • 项目c2
      • 第c3项
    • 项目b4
  • 项目a4
我需要遍历它并将其保存在二维数组中(最终我只是尝试将其转换为JSON实体),我可以同时使用Jquery和/或Javascript。我应该如何进行

谢谢

函数遍历(ul)
{
对于(var指数=0;index0){
遍历(ul.childNodes[index]);
}
//执行其他操作
}
}
函数遍历(ul)
{
对于(var指数=0;index0){
遍历(ul.childNodes[index]);
}
//执行其他操作
}
}
使用JQuery试试:

$.each($("li"), function(index, value) { 
  alert(value); 
});
使用JQuery,请尝试:

$.each($("li"), function(index, value) { 
  alert(value); 
});

我不确定您希望得到的数据结构是什么样的,但这(使用了一些jQuery):

如果需要的话,可以很容易地对其进行调整以改变结果结构的细节


请注意,这是一个javascript对象。如果您确实需要一个JSON对象,那么您只需要使用
var jsonResult=JSON.stringify(result)转换它

我不确定您希望得到的数据结构是什么样的,但这(使用了一些jQuery):

如果需要的话,可以很容易地对其进行调整以改变结果结构的细节


请注意,这是一个javascript对象。如果您确实需要一个JSON对象,那么您只需要使用
var jsonResult=JSON.stringify(result)转换它

查看该列表,您看起来至少有一个三维数据结构(三个嵌套列表)。您能澄清一下您希望输出数组是什么样子吗?而且我认为你不能直接在另一个
    中嵌套
      。我假设它应该在它前面的
    • 中…谢谢chris,我需要一个JSON实体作为我的输出。此外,我还可以使用两个嵌套列表。感谢您查看该列表,您看起来至少有一个三维数据结构(三个嵌套列表)。您能澄清一下您希望输出数组是什么样子吗?而且我认为你不能直接在另一个
        中嵌套
          。我假设它应该在它前面的
        • 中…谢谢chris,我需要一个JSON实体作为我的输出。此外,我还可以使用两个嵌套列表。感谢you@Chris-哦,对不起,你说得太对了!一个关于ul的嵌套的愚蠢错误(现在将对其进行编辑)。关于我的输出,我需要如下内容:{名称:项目a1子项:[],名称:项目a2子项:[],名称:项目a3子项:[{名称:项目b1子项:[],名称:项目b2子项:[],名称:项目b3子项:[{name:item c1子项:[]},}]}相反:{{{name:item a1子项:[]},{name:item a2子项:[]},{name:item a3子项:[{name:item b1子项:[]},{name:item b2子项:[]},{name:item b3子项:[{name:item c1 children:[]}]},]}@Galambalazs是的,是的……就是这样(很抱歉代码难以辨认)你有没有这样的代码来格式化我的输出?@Chris-哦,对不起,你说得太对了!一个关于ul的嵌套的愚蠢错误(现在将编辑它)。关于我的输出,我需要它是:{name:item a1 children:[],名称:项目a2子项:[],名称:项目a3子项:[{名称:项目b1子项:[],名称:项目b2子项:[],名称:项目b3子项:[{名称:项目c1子项:[]],}]}相反:{{{name:item a1 children:[]},{name:item a2 children:[]},{name:item a3 children:[{name:item b1 children:[]},{name:item b3 children:[{name:item c1 children:[]}},]}@Galambalazs是的,是的……就是这样(很抱歉代码难以辨认)你有没有这样的代码来格式化我的输出?当人们把一个答案标记为正确答案,但不投反对票时,我觉得很奇怪。当人们把一个答案标记为正确答案,但不投反对票时,我觉得很奇怪。
          $.each($("li"), function(index, value) { 
            alert(value); 
          });
          
          $(function() {
          
              var result = {};
          
              function createNewLevel(parent,items) {
                  var length = items.length;
                  for(var i = 0; i < length; i++) {
                      if(items[i].tagName == 'UL') {
                          parent['ul' + i] = {};
                          createNewLevel(parent['ul' + i],$(items[i]).children().get());
                      } else {
                          parent['li' + i] = $(items[i]).text();
                      }
                  }
              }
          
              createNewLevel(result, $('ul:first').get());
          
              console.log(result);
          
          });
          
          {
              ul0: {
                  li0: "Item a1",
                  li1: "Item a2",
                  li2: "Item a3",
                  li4: "Item a4",
                  ul3: {
                      li0: "Item b1",
                      li1: "Item b2",
                      li2: "Item b3",
                      li4: "Item b4",
                      ul3: {
                          li0: "Item c1",
                          li1: "Item c2",
                          li2: "Item c3"
                      }
                  }
              }
          }