繁体   English   中英

根据子元素的数量检索 DOM 元素

[英]Retrieve DOM element according to the number of its children

我想获取具有超过 5 个子元素的 DOM 元素,并仅为这些元素添加一个 class 名称。 例如,

<div class="parent">
    <span>child</span>
    <span>child</span>
    <span>child</span>
</div>

<div class="parent">
    <span>child</span>
    <span>child</span>
    <span>child</span>
    <span>child</span>
    <span>child</span>
    <span>child</span>
</div>

<div class="parent">
    <span>child</span>
    <span>child</span>
</div>

在这种情况下,我想将spans名称添加到上面有 6 个子 span 的第二个div中。

我尝试了以下方法:

const parents = document.querySelector(".parent");

if (parents.childElementCount > 5) {
    parents.classList.add('reduce-size');
}

您有 3 个 div 与 class 父级。 所以我认为你必须使用 querySelectorAll('.parent') 和之后的循环。 可能是这样的

const parents = document.querySelectorAll(".parent");
for (let i = 0; i < parents.length; i++) {
  if (parents[i].childElementCount > 5) {
  cityLocationTitle.classList.add('.reduce-size');
}
}
const parents = document.querySelectorAll(".parent");

parents.forEach(el => {
 if(el.childNodes.length > 5){
   el.classList.add('.reduce-size');
 }
});

querySelector只返回第一个匹配的元素。 您需要将querySelectorAll与循环一起使用:

 const parents = document.querySelectorAll(".parent"); for (let parent of parents) { if (parent.childElementCount > 5) { console.log("do stuff here"); } }
 <div class="parent"> <span>child</span> <span>child</span> <span>child</span> </div> <div class="parent"> <span>child</span> <span>child</span> <span>child</span> <span>child</span> <span>child</span> <span>child</span> </div> <div class="parent"> <span>child</span> <span>child</span> </div>

暂无
暂无

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

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