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

How can I create a multi-level list menu from strings?

本文关键字:多级 列表 菜单 创建 字符串      更新时间:2023-09-26

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

  • 芝加哥
  • 丹佛
  • 达拉斯
  • 达拉斯/北部
  • 达拉斯/南部
  • 达拉斯/西部
  • 达拉斯/西部/建筑1
  • 达拉斯/西部/建筑2
  • 休斯顿
  • 萨克拉门托/西部
  • 萨克拉门托/西部/建筑1

我正在尝试动态创建一个无序列表,以便使用jquery创建一个可折叠菜单。

我可以循环遍历一个数组,但构建嵌套的<ul>s和<li>s似乎是不可能的。一旦列表真正构建完成,我就准备好了jquery,但我似乎无法构建它。

有什么jquery可以为我做这件事吗?

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

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