javascript - CSS 排除级联类
问题描述
网络思维帮助!我有很多列表的 html 看起来像
<li>A.</li>
<li><a href="#">B.</a></li>
<li><a class=tr href="#">C.</a></li>
<li class=tr>D.</li>
<li class=notr>E.</li>
我想选择所有未翻译的 innerText
document.querySelectorAll("li:not(.notr):not(.tr)")
问题是如果 TR 类不在 LI 我不能过滤它
li:not(.notr):not(.tr)+li>a:not(.tr)
- 返回空节点列表
这似乎是一个简单的问题,但我很困惑
解决方案
就像我在评论中所说的那样,解决方案是首先获取这个集合,然后通过运行另一个过滤器来优化结果。
let rawresult = document.querySelectorAll("li:not(.notr):not(.tr)");
console.log('raw results:');
rawresult.forEach(el => console.log(el.innerText));
let refinedresult = [];
rawresult.forEach(function(el) {if (el.querySelector(".notr,.tr") == null) refinedresult.push(el);});
console.log('refined results:');
refinedresult.forEach(el => console.log(el.innerText));
<ul>
<li>A.</li>
<li><a href="#">B.</a></li>
<li><a class=tr href="#">C.</a></li>
<li class=tr>D.</li>
<li class=notr>E.</li>
</ul>
推荐阅读
- haskell - 使用预定义变量的 Haskell 代码
- python - 在 OSMnx 中绘制不同的区域对象
- python - StackDriver 条目应该如何创建?
- python - 浅拷贝()方法没有按预期工作?
- python - 3D 局部平均值和使用 3D 卷积
- elasticsearch - ElasticSearch - 如何在聚合中重用 script_fields 字段?
- r - 当所有数据都混合在R中的数据集中时,如何用学期与三个月来规范化数据
- vue.js - Vue中如何导入大数组
- c++ - C++ 读取输入文件
- python - 如何将具有相同索引 0 的两个子列表合并到一个子列表中?