Javascript 如何从字符串创建多级列表菜单?

Javascript 如何从字符串创建多级列表菜单?,javascript,jquery,html,vbscript,hta,Javascript,Jquery,Html,Vbscript,Hta,我在HTA中使用vbscript获取子网位置列表,它返回如下文本: 芝加哥 丹佛 达拉斯 达拉斯/北 达拉斯/南 达拉斯/西部 达拉斯/西部/建筑1 达拉斯/西部/建筑2 休斯顿 萨克拉门托/西部 萨克拉门托/西部/建筑1 我试图动态创建一个无序列表,以便使用jquery创建一个可折叠菜单 我可以在数组中循环,但是构建嵌套的和似乎是不可能的。一旦实际构建了列表,我就准备好了jquery,但我似乎无法构建它 有没有jquery可以帮我做到这一点?其中arrList是GetSubnetLocat

我在HTA中使用vbscript获取子网位置列表,它返回如下文本:

  • 芝加哥
  • 丹佛
  • 达拉斯
  • 达拉斯/北
  • 达拉斯/南
  • 达拉斯/西部
  • 达拉斯/西部/建筑1
  • 达拉斯/西部/建筑2
  • 休斯顿
  • 萨克拉门托/西部
  • 萨克拉门托/西部/建筑1
我试图动态创建一个无序列表,以便使用jquery创建一个可折叠菜单

我可以在数组中循环,但是构建嵌套的
  • 似乎是不可能的。一旦实际构建了列表,我就准备好了jquery,但我似乎无法构建它


    有没有jquery可以帮我做到这一点?

    其中arrList是GetSubnetLocations函数以上述格式(按字母顺序)返回的列表

    Dim arr菜单:ReDim arr菜单(-1)
    调宽arrLocs:ReDim arrLocs(UBound(arrList),1)
    i=0
    对于列表中的每个x
    '也在此处创建选项列表
    intCount=Len(x)-Len(替换(x,“/”,“”)
    arrLocs(i,0)=x
    arrLocs(i,1)=整数计数
    i=i+1
    下一个
    Result.InnerHTML=“”
    重拨保留arrMenu(UBound(arrMenu)+1)
    arrMenu(UBound(arrMenu))=“ul id=”“menu”“>”
    对于x=1至UBound(arrLocs,1)步骤1
    重拨保留arrMenu(UBound(arrMenu)+1)
    arrmunum(UBound(arrmunum))=“
  • ”和“&arrLocs(x,0)和”
  • ” 下一个 对于j=1至UBound(菜单) 如果arrLocs(j,1)>arrLocs(j-1,1),那么 arrMenu(j-1)=替换(arrMenu(j-1),“”,“
      ”) 如果结束 如果arrLocs(j,1)” 下一个 如果结束 下一个 重拨保留arrMenu(UBound(arrMenu)+1) arrMenu(UBound(arrMenu))=“
    ” strMenu=“” 对于菜单中的每个n strMenu=strMenu&n 下一个 Result.InnerHTML=strMenu
    请阅读有关如何正确提问的常见问题解答。你需要展示一些代码来证明你已经做出了努力。没有人会为你写这篇文章。我想我的部分问题是:当我用vbscript添加UL标签时,它们似乎是由……自动完成的。因此我添加了Result.InnerHTML=“
      ”,但Result div的内容最终是“
        ”。这弄乱了我的格式。有人知道这是什么原因吗?我只是想问一下,是否有人知道已经存在的jquery函数可以实现这一点。我不是要求别人“为我写这封信。”
        Dim arrMenu : ReDim arrMenu(-1)
        Dim arrLocs : ReDim arrLocs(UBound(arrList),1)
        i = 0
        For Each x In arrList
            'Also building option list here
            intCount = Len(x) - Len(Replace(x,"/",""))
            arrLocs(i,0) = x
            arrLocs(i,1) = intCount
            i = i + 1
        Next
        
        Result.InnerHTML = ""
        
        ReDim Preserve arrMenu(UBound(arrMenu)+1)
        arrMenu(UBound(arrMenu)) = "<ul id=""menu"">"
        For x = 1 To UBound(arrLocs,1) Step 1
            ReDim Preserve arrMenu(UBound(arrMenu)+1)
            arrMenu(UBound(arrMenu)) = "<li><a>" & " " & arrLocs(x,0) & "</a></li>"
        Next 
        
        For j = 1 To UBound(arrMenu)
            If arrLocs(j,1) > arrLocs(j-1,1) Then 
                arrMenu(j-1) = Replace(arrMenu(j-1),"</li>","<ul style=""display:none"">")
            End If 
            If arrLocs(j,1) < arrLocs(j-1,1) Then 
                For x = 1 To arrLocs(j-1,1) - arrLocs(j,1)
                    arrMenu(j-1) = arrMenu(j-1) & "</li>"
                Next 
            End If 
        Next 
        ReDim Preserve arrMenu(UBound(arrMenu)+1)
        arrMenu(UBound(arrMenu)) = "</ul>"
        
        strMenu = ""
        For Each n In arrMenu
             strMenu = strMenu & n
        Next
        Result.InnerHTML = strMenu