javascript - JS 和 querySelectorAll

标签 javascript

querySelectorAll 问题,很可能是个愚蠢的问题,但我没有看到解决方案。

我有类似下面的内容

<div id="main_0"> ... </div>
<div id="main_1"> ... </div>
<div id="main_1_minor"> ... </div>
<div id="main_2"> ... </div>
<div id="main_2_minor"> ... </div>
              .
              .

我希望选择所有且仅选择那些没有 minor 的 div。

我试过了

var pattern = new RegExp('^main_\\d');
var elSelected = document.querySelectorAll('div[id^=main_]');
elSelected.filter(elt => pattern.test(elt.id)));

但显然这还不够。我不确定如何通过 RegEx 来表示 id 值必须以数字结尾。我尝试了类似 RegExp('^main_\\d$'); 但我没有做对。

最佳答案

您可以将 :not() 选择器与“属性结尾为”选择器一起使用。

"div:not([id$=minor])"

如果它还应验证 idmain_ 开头,那么您也可以在问题中显示时添加它。

"div[id^=main_]:not([id$=minor])"

所以这表示 “选择所有 div 元素,其中 idmain_ 开头并且不以 minor 结尾

如果 minor 不一定在末尾,那么您可以使用 id*=minor 代替“包含”。

document.querySelectorAll("div[id^=main_]:not([id$=minor])")
  .forEach(el => el.style.color = "red");
<div id="main_0"> main </div>
<div id="main_1"> main </div>
<div id="main_1_minor"> main ends with minor </div>
<div id="main_2"> main </div>
<div id="main_2_minor"> main ends with minor </div>

关于javascript - JS 和 querySelectorAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49562389/

相关文章:

javascript - 通过 json 中的键访问值会抛出 undefined

javascript - 使用加密库将 Java AES 加密转换为 Javascript

javascript - 根据对象中另一个键的值获取键值

javascript - 悬停时,从一组 div 中找到匹配的类,并将类名分配给匹配项 (jquery/js)

JavaScript onmouseleave 和 onmouseenter 在 Firefox 和 IE9 中工作,但在 Chrome 中不起作用?

javascript - 如何使用javascript在5秒后打开新窗口

asp.net - 在 Global.asax 中设置 session 变量会导致 AJAX 错误

javascript - 自定义网络字体提供商

javascript - 单击删除按钮时如何打开模态框?

javascript - 正则表达式返回带有下划线组的未定义