【问题标题】:Is there a way to count number of occurrences of a string in the DOM? (javascript/jQuery)有没有办法计算 DOM 中字符串的出现次数? (javascript/jQuery)
【发布时间】:2018-10-31 19:10:41
【问题描述】:

有没有一种方法可以在 javascript 或 jQuery 中找到 DOM 内某个值的出现次数?

例如,如果我有一个

var x = "myFunc('hello');"

如何统计"myFunc('hello');"在整个DOM中出现的次数?

【问题讨论】:

  • indexOf(x) 会返回什么?
  • .indexOf(x) 为整个文档计算时间?但是,一个 indexOf 函数是找到不计数的索引。
  • "就好像我基本上使用浏览器查找一样。" - 请参阅stackoverflow.com/q/8080217/1048572developer.mozilla.org/en-US/docs/Web/API/Window/find。但它不会返回计数。
  • @showdev 不 indexOf 使用 count 参数作为 > -1 来计算例如是否存在?不能用作 > 1 来检查是否存在 2 或更多吗?
  • 你在数什么?变量?

标签: javascript jquery count find indexof


【解决方案1】:

您可以使用正则表达式匹配,并获取所有匹配的数组的长度。

var matches = document.body.innerHTML.match(/myFunc\('hello'\)/g);
var count = matches ? matches.length : 0;

用变量来做:

var myVar = "myFunc\\('hello'\\)";
var re = new RegExp(myVar, "g");
var matches = document.body.innerHTML.match(re);
var count = matches ? matches.length : 0;

请注意,您需要转义 myVar 中的反斜杠,以便将其按字面意思传递给 RegExp 构造函数。

请参阅Escape a variable within a Regular Expression 了解可用于在将字符串用作正则表达式之前转义字符串中所有特殊字符的函数。

【讨论】:

  • 谢谢,我会测试一下,如何用变量更改括号内的“你好”?
  • 没关系,我在另一个帖子中找到了它,我现在试试,让你知道
  • 我正在尝试:var re = new RegExp(myVar,"g"); var 匹配 = document.body.innerText.match(re).length;但它说无法读取 null 的长度
  • match() 如果没有匹配项,则返回 null。我已经添加了代码来检查。
  • 如果它们在 onclick="" 内,这是否也能找到它们? myFunc('var');位于不同 的 onclick="" 属性内。因为现在返回我 0,但它在 dom 中出现了两次
猜你喜欢
  • 2021-12-19
  • 2023-02-09
  • 2021-10-27
  • 2010-10-27
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多