2013-07-08 35 views
1

我使用document.getElementsByTagName獲取頁面中的所有圖像並將該數組存儲在名爲imgs的變量中。然後,每次我使用document.createElementdocument.appendChild創建一個新的圖像標籤並將其附加到文檔中時,變量imgs的內容會動態更改,這意味着它將包含新添加的圖像標籤。根據我的理解,我已經將內容保存在變量imgs之前,所以它應該始終保持不變。例如。如果我將imgs的長度保存在另一個名爲imgsLength的變量中,即使我將另一個img標籤動態添加到文檔,它也不會更改。所以我對imgsimgsLength之間的這種不一致感到有點困惑。document.getElementsByTagName()將動態更改

+0

無論何時您保存某個數組的長度(nodeList或其他類型的集合),實際上您只能從長度屬性和值類型中複製返回值,因爲已知數據是不可變的。 – Givi

回答

5

你誤解了對象。

getElementsByTagName()返回一個NodeList對象,其中包含匹配元素的實時視圖。
此對象是mutable;它會響應DOM突變而改變。

var img = getElementsByTagName()創建一個引用同一個對象的變量。它不會複製任何東西。

imgs.length返回表示當前NodeList的長度的不可變數字。

var imgLength = imgs.length創建一個引用這個不可變數字的變量。
當NodeList發生變化時,imgs.length會引用不同的數字;這不會影響引用其先前值的變量。

+0

謝謝你。現在很清楚! – chaonextdoor