简体   繁体   English

将相同的类添加到子元素取决于 ul ID

[英]Add same class to children element depends on ul ID

here is my HTML这是我的 HTML

 let allElements = document.querySelectorAll("div.menu_sub_box ul.lvl_1 > li"); allElements.forEach((el, index) => { console.log(el); let id = (el.id = index + 1); });
 <div class="menu_sub_box"> <ul class="lvl_1"> <li> <a class="lvl_1" href="abc">val 1</a> <ul class="lvl_2"> <li><a href="item1">Item 1 content</a></li> <li><a href="item2">Item 1 content</a></li> <li><a href="item2">Item 1 content</a></li> </ul> </li> <li> <a class="lvl_1" href="abc">val 2</a> <ul class="lvl_2"> <li><a href="item1">Item 1 content</a></li> <li><a href="item2">Item 1 content</a></li> <li><a href="item2">Item 1 content</a></li> </ul> </li> </ul> </div>

Here is my problem.这是我的问题。 I want to add uniqe ID to every li class ='lvl-1'.我想为每个 li class ='lvl-1' 添加 uniqe ID。 I do this by foreach loop then I want add to every children我通过 foreach 循环来做到这一点,然后我想添加到每个孩子

  • element of class='lvl_2' same class dependent on this ID. class='lvl_2' 相同类的元素取决于此 ID。 For example :例如 :

     <ul class="lvl_1"> <li id='1'> <a class="lvl_1" href="abc">val 1</a> <ul class="lvl_2"> <li class='1-col'><a href="item1">Item 1 content</a></li> <li class='1-col'><a href="item2">Item 1 content</a></li> <li class='1-col'><a href="item2">Item 1 content</a></li> </ul> </li> <li id='2'> <a class="lvl_1" href="abc">val 2</a> <ul class="lvl_2"> <li class='2-col'><a href="item1">Item 1 content</a></li> <li class='2-col'><a href="item2">Item 1 content</a></li> <li class='2-col'><a href="item2">Item 1 content</a></li> </ul> </li> </ul>

    Sorry for my English I hope you can understand what I want to do.对不起我的英语我希望你能理解我想做什么。 Thanks for help感谢帮助

  • If I understood correctly, this is the answer:如果我理解正确,这就是答案:

     let liElements = document.querySelectorAll("div.menu_sub_box ul.lvl_1 > li"); liElements.forEach((el, index) => { let id = (el.id = index + 1); el.id = id; let cols = el.querySelectorAll("li"); cols.forEach((col) => { col.className = (index + 1) + "-col"; }) })
     <div class="menu_sub_box" id="menu_sub_box"> <ul class="lvl_1"> <li> <a class="lvl_1" href="abc">val 1</a> <ul class="lvl_2"> <li><a href="item1">Item 1 content</a></li> <li><a href="item2">Item 1 content</a></li> <li><a href="item2">Item 1 content</a></li> </ul> </li> <li> <a class="lvl_1" href="abc">val 2</a> <ul class="lvl_2"> <li><a href="item1">Item 2 content</a></li> <li><a href="item2">Item 2 content</a></li> <li><a href="item2">Item 2 content</a></li> </ul> </li> <li> <a class="lvl_1" href="abc">val 3</a> <ul class="lvl_3"> <li><a href="item1">Item 3 content</a></li> <li><a href="item2">Item 3 content</a></li> <li><a href="item2">Item 3 content</a></li> </ul> </li> </ul> </div>

    For printing purpose I specified the id to the container div, in order to see the html itself after the ids were attached.Basically you can iterate through all <li> elements and set id=1 then for all childs of <ul> append a "-col" to the existing id.出于打印目的,我指定了容器 div 的 id,以便在附加 id 后查看 html 本身。基本上,您可以遍历所有<li>元素并设置id=1然后为<ul>附加一个"-col"到现有ID。

     let lis = document.querySelectorAll("div.menu_sub_box ul.lvl_1 > li"); lis.forEach((element, index) => { const id_cols = element.querySelectorAll("li"); element.id = index + 1; id_cols.forEach((column) => { column.className = (index + 1) + "-col"; }) }) console.log(document.getElementById("menu_sub_box").innerHTML)
     <div class="menu_sub_box" id="menu_sub_box"> <ul class="lvl_1"> <li> <a class="lvl_1" href="abc">val 1</a> <ul class="lvl_2"> <li><a href="item1">Item 1 content</a></li> <li><a href="item2">Item 1 content</a></li> <li><a href="item2">Item 1 content</a></li> </ul> </li> <li> <a class="lvl_1" href="abc">val 2</a> <ul class="lvl_2"> <li><a href="item1">Item 2 content</a></li> <li><a href="item2">Item 2 content</a></li> <li><a href="item2">Item 2 content</a></li> </ul> </li> <li> <a class="lvl_1" href="abc">val 3</a> <ul class="lvl_3"> <li><a href="item1">Item 3 content</a></li> <li><a href="item2">Item 3 content</a></li> <li><a href="item2">Item 3 content</a></li> </ul> </li> </ul> </div>

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM