如何选择同一个类的所有元素,而不选择上述类加上第二个类的其他元素?

问题描述

我只想选择具有某个第一类(价格)的跨度,而不选择也具有第二类(ishidden)的类似跨度。

<div class="classbla classble classbli">
  <div class="classblo">
    <span class="price  ishidden ">
    </span>
  </div>
</div>

我尝试过:

var z = document.querySelectorAll('.price');

这:

var z = document.querySelectorAll('.price span:not(.price.ishidden)');

这:

var z = document.querySelectorAll('.price','span:not(.ishidden)');

和其他一些变体,但没有成功:它总是选择所有以'price'开头的元素,无论它们是仅具有第一类还是具有两个类。

此外,我正在非我的网站上尝试使用导航器控制台。

解决方法

尝试document.querySelectorAll('.price:not(.ishidden)')

根据https://developer.mozilla.org/

由于所有CSS选择器字符串均有效,因此您也可以取消选择器:

var el = document.querySelector(“ div.user-panel:not(.main)input [name ='login']”);

这将选择一个带有父div且具有用户面板类而不是主类的输入。

var elem = document.querySelectorAll('.price:not(.ishidden)');
console.log(elem[0])
<div class="classbla classble classbli">Test
  <div class="classblo">Test1
    <span class="price  ishidden">Test2
    </span>
    <span class="price">Test3
    </span>
  </div>
</div>

,

这对我来说很好。它会选择所有具有类别价格且未筛选的元素

document.querySelectorAll('.price:not(.ishidden)')