javascript - 如何使用 querySelector 检索 div 第一个子元素兄弟节点?
问题描述
我有如下的DOM结构
<div class="table_body">
<div class="table_row">
<div class="table_cell">first</div>
<div class="table_cell">chocolate products</div><!-- want to access this div content -->
</div>
<div class="table_row">
<div class="table_cell">third</div>
<div class="table_cell">fourth</div>
</div>
</div>
从上面的 HTML 我想table_cell
在第一个div 中使用类名访问第二个 div 的 div 内容table_row
。
所以基本上我想table_cell
用内容巧克力产品检索带有类名的 div 的内容。
我试图像下面那样做
const element = document.querySelector('.rdt_TableBody');
const element1 = element.querySelectorAll('.rdt_TableRow')[0]
const element2 = element1.querySelectorAll('.rdt_TableCell')[0].innerHTML;
当我记录element2
值时,它会给出一些奇怪的输出,而不是文本“巧克力产品”
有人可以帮我解决这个问题。谢谢。
解决方案
在您的代码中
element1.querySelectorAll('.table_cell')[0]
,这是针对第一个元素,即<div class="table_cell">first</div>
。这就是您没有得到预期输出的原因。
我已经做到了element1.querySelectorAll('.table_cell')[1]
,所以它会瞄准<div class="table_cell">chocolate products</div>
。
const element = document.querySelector('.table_body');
const element1 = element.querySelectorAll('.table_row')[0]
const element2 = element1.querySelectorAll('.table_cell')[1].innerHTML;
console.log(element2);
<div class="table_body">
<div class="table_row">
<div class="table_cell">first</div>
<div class="table_cell">chocolate products</div>
</div>
<div class="table_row">
<div class="table_cell">third</div>
<div class="table_cell">fourth</div>
</div>
</div>
由于您要定位的元素是最后一个div
具有 class的元素,因此table_cell
您可以:last-of-type
在table_cell
class using上使用document.querySelector
。但是,:nth-of-type
如果有超过 2 个元素并且您想要定位第一个和最后一个之间的任何元素,您也可以使用。
下面是使用:last-of-type
.
const elem = document.querySelector(".table_row > .table_cell:last-of-type");
console.log(elem?.innerHTML);
<div class="table_body">
<div class="table_row">
<div class="table_cell">first</div>
<div class="table_cell">chocolate products</div> //want to access this div content
</div>
<div class="table_row">
<div class="table_cell">third</div>
<div class="table_cell">fourth</div>
</div>
</div>
有关更多信息,您可以参考:nth-of-type
和。:last-of-type
child combinator(>)
推荐阅读
- terraform - terraform import 和 terraform state mv 的区别
- javascript - 将 EXECUTE 语句从 Azure SQL 转换为 Snowflake
- sql-server - 如何在我的 symfony 项目中将 SQL Server 与 ORM Doctrine 连接起来?
- node.js - 错误:找不到指定的模块。node-openalpr && node-openalpr-remastered
- kubernetes - kubernetes - 如何最好地根据环境、标签和选择器或命名空间隔离资源?
- firebase - 根据颤振项目添加错误
- python - 为什么我不能在 for 循环中打印每个结果?
- java - Java - 如何让 OpenAPI (Swagger) 识别 @BeanParam 的路径和查询参数?
- r - 有没有办法使用 geom_abline 绘制垂直线?
- laravel - 通过缓存键删除带有标签的缓存