javascript – 使用querySelector查找包含在兄弟行中的下一个单元格
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用querySelector查找包含在兄弟行中的下一个单元格,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2302字,纯文字阅读大概需要4分钟。
内容图文
我正在尝试使用querySelector来查找表的NEXT行中的第一个单元格.因此,从ROW 1开始,找到下一个TR元素,然后找到该TR元素中的第一个子TD元素.
但是,当我编写CSS选择器时,它返回null.
我的CSS选择器语法是:
"tr.row ~ tr td"
这是一个完整的工作示例:
<!DOCTYPE html>
<html>
<head>
<script>
function findRow()
{
var row1 = document.querySelector("tr.row");
var targetCell = row1.querySelector("tr.row ~ tr td");
alert(targetCell);
}
</script>
</head>
<body>
<table>
<tr class = "row">
<td class = "cell"></td>
</tr>
<tr class = "row">
<td class = "cell"></td>
</tr>
</table>
<script>
findRow();
</script>
</body>
</html>
所以选择器“.row1成功地给了我一个id为row1的TR元素.
但是,第二个选择器“.row1~tr td”返回null.
现在,如果不是使用TR元素调用querySelector,而是调用document.querySelector,它可以工作.我甚至可以调用row1.parentNode.querySelector,然后它也可以工作.这向我表明调用querySelector的实际Element不包含在要搜索的元素集中.
不幸的是,这不是解决方案.这只是一个简单的例子:在我的实际用例中,我不能从row1上面的父元素调用querySelector,因为那时我将丢失我所在的上下文 – (在我的实际用例中我有很多,动态生成的行,所以如果我调用document.querySelector,甚至row1.parentNode.querySelector,我将丢失我的上下文).
我意识到我可以用普通的DOM遍历循环来做这件事,但我试图养成在这里使用querySelector的习惯,因为这显然对未来更好. (另外,我不是在这里使用jQuery.)我也怀疑:范围选择器在这里会有所帮助,但不幸的是,它还没有被广泛支持.
那么有可能使用querySelector做我想做的事情吗?
解决方法:
使用querySelector会很困难. element.querySelector的问题是它只是目标后代节点.更好地使用像
var targetCell = row1.nextElementSibling.cells[0];
var row1 = document.querySelector("tr.row"),
targetCell = row1.nextElementSibling.cells[0];
alert(targetCell);
<table>
<tr class="row">
<td class="cell"></td>
</tr>
<tr class="row">
<td class="cell"></td>
</tr>
</table>
如果你真的想要使用它,你可以在父级上使用:nth-??child(k)来引用第k个元素.
var parent = row1.parentElement,
index = [].slice.call(parent.children).indexOf(row1) + 1,
targetCell = parent.querySelector(":nth-child("+index+") ~ tr td");
var row1 = document.querySelector("tr.row"),
parent = row1.parentElement,
index = [].slice.call(parent.children).indexOf(row1) + 1,
targetCell = parent.querySelector(":nth-child("+index+") ~ tr td");
alert(targetCell);
<table>
<tr class="row">
<td class="cell"></td>
</tr>
<tr class="row">
<td class="cell"></td>
</tr>
</table>
内容总结
以上是互联网集市为您收集整理的javascript – 使用querySelector查找包含在兄弟行中的下一个单元格全部内容,希望文章能够帮你解决javascript – 使用querySelector查找包含在兄弟行中的下一个单元格所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。