如何使用JavaScript通过特定标签reg表达式从HTML文档中获取元素?

时间:2016-12-01 09:27:20

标签: javascript

我希望从document获取以ge-开头的所有元素。示例<ge-survey></ge-survey> <ge-sombody></ge-sombody> <ge-...></ge-...>

var elements = document.getElementsByTagName("*"); // <<-- now return all

我也尝试过:

var elements = document.querySelectorAll("^=ge-");

但得到:

geadele.js:3 Uncaught SyntaxError: Failed to execute 'querySelectorAll' on 'Document': '^=ge-' is not a valid selector.

我也试过了:

var els = document.getElementsByTagName("^=ge-"); // return epty HTMLcollection

我的HTML:

...
</head>
<body>
  <ge-survey></ge-survey>
  <ge-element></ge-element>
</body>
...

2 个答案:

答案 0 :(得分:1)

如果您知道要获取的所有var obj = { 0 : "a", 1 : "b", 2 : "c"}; console.log(Object.keys(obj)); // [0, 1, 2] 元素,则可以使用var obj = { 0 : "a", 1 : "b", 2 : "c"}; console.log(Object.values(obj)); // ['a', 'b', 'c'] 并连接结果。

ge-

在我看来,这种方法在包含大量元素的文档中比regexp快,但我没有任何基准测试。

如果您不了解所有可能的document.getElementsByTagName('ge-somebody')元素,可以通过过滤所有元素来获取它:

var ge1Elements = Array.prototype.slice.call(document.getElementsByTagName('ge-1'));
var ge2Elements = Array.prototype.slice.call(document.getElementsByTagName('ge-2'));
...
var geElements = [].concat(ge1Elements, ge2Elements, ge3Elements);

答案 1 :(得分:0)

您可以使用document.querySelector并使用&#39;以&#39;开头键入css选择器: Can I use a regular expression in querySelectorAll?