javascript - 如何获取类名非空的元素数量

标签 javascript html

示例代码:

console.log(document.querySelectorAll("p[class]").length);
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>

我得到的:4
我的期望:2

最佳答案

您可以从集合中创建一个数组,并根据其 className 是否为数字来过滤:

const psWithClass = document.querySelectorAll("p[class]");
const countPsWithNumericClass = [...psWithClass]
  .filter(({ className }) => /^\d+$/.test(className))
  .length;
console.log(countPsWithNumericClass );
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>

您还可以使用reduce来避免创建另一个中间数组,这会更有效,但读起来有点奇怪:

const psWithClass = document.querySelectorAll("p[class]");
const countPsWithNumericClass = [...psWithClass]
  .reduce(
    (a, { className }) => a + /^\d+$/.test(className),
    0
  );
console.log(countPsWithNumericClass );
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>

或者,根本没有任何中间数组:

const psWithClass = document.querySelectorAll("p[class]");
const countPsWithNumericClass = Array.prototype.reduce.call(
  psWithClass,
  (a, { className }) => a + /^\d+$/.test(className),
  0
);
console.log(countPsWithNumericClass );
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>

如果你只关心类名是否不是空字符串,请使用:not([class='']):

const psWithNonEmptyClass = document.querySelectorAll("p[class]:not([class=''])");
console.log(psWithNonEmptyClass.length);
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>

关于javascript - 如何获取类名非空的元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56302470/

相关文章:

javascript - 在脚本元素中不包含类型会产生什么影响?

javascript - 如何检测浏览器控制台中的按键事件?

javascript - react : formData empty in PHP?

html - 如何将三个部分彼此对齐;其中每个部分的高度等于三的最大高度

javascript - 使用 javascript 跳过空格

html - 无法使用 css 设置 "active"链接的样式

javascript - Twilio 调用自动断开

javascript - 当光标位于内部 svg 元素上时,d3-zoom 中断

html - 不正确的自动完成输入样式;

javascript - 在Python中使用Selenium单击特定按钮并启动for循环