假设我有一个很小的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