javascript - 根据 ul ID 将相同的类添加到子元素

标签 javascript html class dom getelementbyid

这是我的 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>

这是我的问题。我想为每个 li class ='lvl-1' 添加唯一 ID。我通过 foreach 循环执行此操作,然后我想根据此 ID 添加到 class='lvl_2' 同一类的每个子

  • 元素。例如:

    <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>

    抱歉我的英语不好,我希望你能明白我想做什么。感谢您的帮助

  • 最佳答案

    出于打印目的,我为容器 div 指定了 id,以便在附加 id 后查看 html 本身。基本上,您可以遍历所有 <li>元素和集合id=1那么对于<ul>的所有 child 附加 "-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>

    关于javascript - 根据 ul ID 将相同的类添加到子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59664620/

    相关文章:

    javascript - 如何将字符串从一个.js文件传递到另一个.js文件

    javascript - 逐列二维数组解构

    Javascript - 确保输入至少有一个数字

    javascript - 覆盖按钮的 Jquery Mobile Css

    html - 如何用元素覆盖一 block 边框?

    python - 如何在科学的Python脚本中处理全局参数

    c++ - 从命令行读取常量作为全局变量

    javascript - 禁用表单自动提交

    javascript - 链接页面的 HTML/JS 解释对话框

    javascript - 为什么我不能在调用 super 构造函数的箭头函数中使用 "this"?