2016-12-01 20 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

相關問題