假設我有一個很小的ID列表(大約10),並且我想在Html頁面中獲取相應的元素。GetElementById vs Dom迭代
我應該對每個ID使用的getElementById(),我也可以通過DOM遍歷像這樣:
for (var i = 0; i < element.childNodes.length; i++)
{
var childNode = <HTMLElement>element.childNodes[i];
if (this.Ids.indexOf(node.id, 0) >= 0)
this.collection.setValue(node.id, <HTMLInputElement>node)
if (childNode.childNodes.length > 0)
this.iterateHtmlNodes(task, childNode);
}
- 這是做到這一點的最快方法?
- 哪種方法最好?
- 如果我有更多的元素要獲取(> 100)會怎麼樣?
我正在使用TypeScript。
迭代是瘋狂的! 'getElementById'是對本地方法的單個函數調用。這比手動循環快十幾倍。 – Christoph
沒有那麼快......儘管我認爲* getElementById將會被所有瀏覽器高度優化,但實際測試肯定會說它比循環更快。目前,大多數引擎對JavaScript循環進行了高度優化。可以肯定的是,對於少數元素和平坦的DOM樹,兩者在速度上都相似。 –
看看我做了這個測試:[鏈接](http://jsperf.com/getelementsbyclassname-vs-iteration) – ThunderDev