querySelector所有具有特定名称的onclick函数

时间:2020-09-27 01:58:24

标签: javascript

我能以某种方式获得以@enable-rounded false; @import "~bootstrap/scss/bootstrap" /*lots of ways to do this step, see other answers herein*/ 开头的所有onclick函数元素吗?

我尝试过:

onclick="tabbed('tabpage...

但是它不起作用。 有任何想法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用类名,这是一个很好的方法。但是,如果您需要预期的方式,请尝试以下操作,

document.querySelectorAll("[onclick=\"tabbed('tabpage*')\"]")

答案 1 :(得分:2)

查询选择器中用于检查字符串是否以特定字母开头的部分是^=。选择器中的*与您认为的字符不匹配,相反,您需要在onclick之后输入您希望^=属性开头的内容:< / p>

const elems = document.querySelectorAll("[onclick^=\"tabbed('tabpage\"]");
console.log(elems.length, 'elements found');
<button onclick="tabbed('tabpage')">A</button>
<button onclick="tabbed('tabpage', 'foobar')">B</button>

但是,这确实匹配了所有以tabbed('tabpage开头的元素,这意味着它将匹配不完整的onclick属性,如下所示:

<button onclick="tabbed('tabpage">A</button>

如果这是一个问题,则可以考虑先选择onclick元素,然后再基于正则表达式对其进行过滤。这样可以防止选择不完整的tabbed方法,并且只会选择将onclick设置为选项卡式函数调用的标签(没有其他调用)。

const elems = [...document.querySelectorAll("[onclick]")].filter((e) => /^tabbed\('tabpage',?[^\)]*\)$/.test(e.getAttribute('onclick')));

console.log(elems.length);
<button onclick="tabbed('tabpage')">A</button>
<button onclick="tabbed('tabpage', 'foobar')">B</button>
<button onclick="tabbed('tabpage">C</button> <!-- Not selected -->
<button onclick="tabbed('tabpage'); xyz('abc')">D</button> <!-- Not selected -->