javascript - 使用 getElementsByClassName 获取直接子元素
问题描述
我只想使用 getElementsByClassName 获取直接子元素。现在我有例如这个 HTML
<div class="parent">
<div class="content">
<div class="content"></div>
</div>
<div class="content"></div>
</div>
而且我只想要两个直接孩子的 div 到具有“父”类名的 div。
const parentElement = ...
const contents = parentElement.getElementsByClassName('content');
console.log(contents); // returns three elements
解决方案
您可以querySelectorAll
改用,并使用选择器字符串.parent > .content
来选择.content
s 的直接子代.parent
:
const contents = document.querySelectorAll('.parent > .content');
console.log(contents.length);
<div class="parent">
<div class="content">
<div class="content"></div>
</div>
<div class="content"></div>
</div>
如果您的 HTML 有多个父级,并且您只想选择.content
一个父级的子级,则选择该父级,调用querySelectorAll
它(而不是文档),然后使用:scope > .content
:
const contents = first.querySelectorAll(':scope > .content');
console.log(contents.length);
<div class="parent" id="first">
<div class="content">
<div class="content"></div>
</div>
<div class="content"></div>
</div>
<div class="parent">
<div class="content">
<div class="content"></div>
</div>
<div class="content"></div>
</div>
推荐阅读
- r - 编织到 HTML 时找不到本地函数
- python - 从 FlashScore.ro 实时抓取信息
- javascript - 渲染动画页面然后使用 Node.js 重定向到主页
- xquery - 如何编写从命令行传递输入文件的查询(Saxon)
- javascript - 测试具有多个 if/else 块的函数在 javascript 中是否返回 true 或 false
- oracle - 如何创建用户表?
- javascript - 如何在 Heroku 上部署 socket.io 项目?
- swift - SwiftUI - 导航返回时如何取消初始化 StateObject?
- apache - 具有一个文档根目录的多个 Apache 虚拟主机文件?
- javascript - 在开玩笑测试中用夹具覆盖组件变量