2016-12-01 25 views
1

我想从document中获取以ge-开头的所有元素。示例<ge-survey></ge-survey> <ge-sombody></ge-sombody> <ge-...></ge-...>如何使用JavaScript通过特定标记reg表达式从HTML文档中获取元素?

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> 
... 
+0

没有我想得使用REG expresions标签从HTML文档元素的数组。这是关于JavaScript reg表达式的问题。 –

+0

[getElementByName&Regex]的可能重复(http://stackoverflow.com/questions/3184093/getelementbyname-regex) – Mahi

+0

https://developer.mozilla.org/nl/docs/Web/API/Document/querySelector – Mahi

回答

1

如果你知道所有ge-元素,你想要得到的,你可以使用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); 

在我看来这种方法在文件与大量元素比正则表达式快,但我没有任何的基准。

如果你不知道这一切更多钞票ge-元素,你可以通过过滤所有元素得到它:

var elements = document.getElementsByTagName("*"); 
var geElements = []; 
for(var i = 0; i < elements.length; i++){ 
    if(elements[i].tagName.indexOf('GE-') === 0){ 
     geElements.push(elements[i]); 
    } 
} 
console.log(geElements); 
+0

我试过了,但是我最好用reg表达式准备好JavaScript的决定,而不需要编写更多的代码; –

+0

我不知道在html中的ge元素。 –

+0

@EdgarasKarka如果您不知道所有ge标签的集合,则应使用第二种方法通过tagName匹配过滤任何html元素集合 – Antonio

相关问题