2016-07-29 38 views
4

在我的javascript中,我有兩個元素。element.children的console.log顯示0長度,但後來擴展後有三個條目

我已經登錄了兩個元素,它顯示...

元1

enter image description here

元2.

enter image description here

有問題。

當我console.logelement小號.children他們顯然還有些HtmlCollection小號

你就會明白在一分鐘以下手段:奇怪的是但是,這一個的HTMLCollection是空的(並具有長度爲0 ),但有3個元素(長度爲3)。

如果你讀了console.log S下的元件的孩子,你會明白我在說什麼......

元1兒童&長度:

enter image description here

元素2兒童&長度:(亂了一個)

enter image description here

有沒有人知道這裏發生了什麼?

如何解決這個問題,我需要循環槽HtmlCollection,但它不會讓我因爲長度是0 ...?

在此先感謝! 所有幫助表示讚賞。

+1

您可以創建一個jsfiddle或使相關的源代碼可訪問 – NewToJS

回答

14

將對象記錄到控制檯時,對象的當前狀態不會被快照並顯示(如您所期望的);相反,控制檯獲取對象的實況參考。當您在控制檯中展開它時,當您將其展開爲時,會看到其中的內容爲,而不是您登錄時的內容。更多關於this question and its answers

顯然,當您進行日誌記錄時,您的集合是空的,然後再獲取它們的元素。你只是想讓你的代碼等待,直到集合被填充。例如,如果您在腳本運行時立即執行此操作,請考慮將腳本放在文檔的末尾,就在關閉</body>標記之前。

非常微妙對象旁邊的藍色(i)圖標有一個有用的工具提示;如果你懸停它,你看:

Tooltip saying "Object value at left was shapshotted when logged, value below was evaluated just now."

它說:「在左邊的對象值shapshotted登錄時,低於價值評價剛纔。「

+1

感謝您的幫助!我沒有意識到,這是在我添加元素到html(通過jscript)之前被調用 –

+0

這是正確的方法,它爲我工作! – espaciomore

相關問題