[英]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 循环来做到这一点,然后我想添加到每个孩子
<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.