寻找缺少子元素的元素

Vanilla JS Find Element with Missing Child Element

本文关键字:元素 寻找      更新时间:2023-09-26

我试图得到一个布尔值,让我知道如果父元素有子元素。以下是一些约束条件:

  1. 可以有x个这样的"盒子"
  2. 检查并查看是否有任何具有页脚元素的框
  3. 如果框没有页脚元素,添加一个类

    <div class="data-trend"> <header></header> <div class="main"></div> <footer></footer> </div>

    <div class="data-trend"> <header></header> <div class="main"></div> <footer></footer> </div>

    <div class="data-trend"> <header></header> <div class="main"> <span class="glyphicons"><span> <!-- On the glyphicons I would add class if there is no footer --> </div> <!-- notice no footer --> </div>

将上述注释移动到实际答案中:

var elems = document.querySelectorAll('.data-trend'),
    len = elems.length,
    i = -1
while(++i < len) {
  if(!elems[i].querySelector('footer')) elems[i].classList.add('no-footer')
}
.no-footer { border: 3px solid blue; }
<div class="data-trend">
  <header>Testing</header>
  <div class="main"></div>
  <footer>Footer</footer>
</div>
<div class="data-trend">
  <header>Testing</header>
  <div class="main"></div>
  <footer>Footer</footer>
</div>
<div class="data-trend">
  <header>Testing</header>
  <div class="main">
    <span class="glyphicons"><span>
  </div>
</div>

如果您在香草中做了很多这样的事情,那么为自己定义一个forEach辅助函数是有意义的

function forEach(elems, fn){
  var len = elems.length,
      i = -1
  while(++i < len) {
    fn(elems[i])
  }
}