代码之家  ›  专栏  ›  技术社区  ›  totalnoob

获取包含特定标记的节点子级-javascript

  •  0
  • totalnoob  · 技术社区  · 6 年前
    document.getElementById('container').addEventListener('click', (e) => {
        const children = [...document.getElementsByClassName('profile')];
    }
    

    如何访问作为img标记的每个子节点?

    我想做点什么

    children.child.node('img').indexOf(e.target)
    
    <div id="container">
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
        <div class="profile">
        <img src="" />
      </div>
    </div>
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   CertainPerformance    6 年前

    不需要数组操作,可以使用查询字符串 .profile > img 选择 img 是A的直系子女 .profile :

    const imgs = [...document.querySelectorAll('.profile > img')];
    console.log(imgs.length);
    <div id="container">
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
    </div>
        2
  •  0
  •   Ele    6 年前

    使用此选择器 #container .profile img 以避免选择不需要的元素。

    Array.from(document.querySelectorAll('#container .profile > img')).forEach(img => console.log(img));
    .as-console-wrapper { max-height: 100% !important; top: 0; }
    <div id="container">
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
      <div class="profile">
        <img src="" />
      </div>
    </div>
    <!-- This is an additionall container -->
    <div id="container2">
      <div class="profile">
        <img src="" />
      </div>
    </div>