以下函數只是返回文檔中帶有指定標記名的元素的一個。由於某種原因,在連續調用函數時,它的執行速度會變得越來越慢。我已經徹底地測試了它,並在原因中測試了for-loop行,但是我不明白爲什麼會導致連續調用。Javascript:函數的多次運行中的神祕滯後
function getElementsByTagName2(tagName){
var arr=new Array();
var elems=document.getElementsByTagName(tagName);
for(var i=0, len=elems.length; i!=len; arr.push(elems[i++]));
return arr
}
編輯:更改變量名稱,以請user257493。
EDIT1:剛剛測試過jQuery,它有相同的問題。儘管如此,降解效果不大。
出於好奇,如果你長時間運行它,你會發現瀏覽器的內存使用量明顯增加嗎? – 2010-07-08 02:56:15
您是否正在爲每個調用創建一個新的數組實例?在它開始減速之前有多少實例?你有沒有考慮過jQuery?它允許你建立一組元素並對這些集合進行操作 - 可能會更容易。 – Mayo 2010-07-08 02:56:16
我不太明白這是做什麼。在我看來,整個函數體可以用'return document.getElementsByTagName(e)'替換。它只是一個顯示經濟放緩的例子嗎? – deceze 2010-07-08 02:58:05