Javascript CSS排除级联类

Javascript CSS排除级联类,javascript,css,cascading,Javascript,Css,Cascading,网络思维帮助!我有很多列表的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> 问题是如果类TR不在LI中,我就不能过滤它

网络思维帮助!我有很多列表的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>
问题是如果类TR不在LI中,我就不能过滤它

li:not.notr:not.tr+li>a:not.tr-返回空节点列表


这似乎是一个简单的问题,但我感到困惑

正如我在评论中所说,解决方案是首先获取此集合,然后通过在该集合上运行另一个筛选器来优化结果

让rawresult=document.querySelectorAllli:not.notr:not.tr; 记录“原始结果:”; rawsult.forEachel=>console.logel.innerText; 设refinedresult=[]; rawresult.forEachfunctionel{if el.querySelector.notr,.tr==null refinedresult.pushel;}; console.log“优化结果:”; refinedresult.forEachel=>console.logel.innerText; A. D E
它怎么不起作用?最后一个选择器需要指向哪个元素?是否希望所有元素都没有类名?。。由于您试图排除.tr和.notr。?顺便说一句,您缺少类属性的引号。坏的:好的:那么你只需要那些不在李类中也不在a类中的文本?只看这个例子中的前两个。这不能用一个单一的querySelectorAll来完成,所以你需要对结果集合进行一些过滤。是的,我正在尝试过滤结果集,但是如果跳过了包含TR单词的文本,这是一个很慢的答案,但不是最好的答案。如果有人在一行中用过滤器给出答案,我将不胜感激
document.querySelectorAll("li:not(.notr):not(.tr)")