2015-08-22 146 views
2

我在本地頁面嵌入了console.log(document.body)用於學習目的,當我點擊刷新時,它顯示了body,如baseURL,innerHTML等元素的屬性,而不是它的內容 。這是爲什麼發生? (我正在使用Chrome43)爲什麼console.log(document.body)會給出不同的結果?

+0

你是什麼意思「身體的財產」?你認爲'typeof document.body'會是什麼? – nnnnnn

+0

對於這兩種情況的對象,它向我展示了諸如innerHTML,baseURL等的東西,而不是通常的DOM樹 – Roy

+1

沒有關於控制檯應該做什麼的規範,所以您看到的是瀏覽器開發人員認爲是有用的。如果您想查看內容,請使用* innerHTML *屬性。 – RobG

回答

2

在JavaScript和DOM中,document.body是一個對象,當您使用控制檯記錄它時,Chrome會顯示顯示包含其所有屬性的對象。 document.body的內容可以在innerHTML屬性中找到,也可以通過其他屬性進行訪問。

如果存在競爭條件並且在完成DOM樹之前觸發console.log(document.body),Chrome可能會顯示對象屬性而不是DOM樹。

如果您需要DOM樹,請在身體加載後嘗試記錄document.body

+0

另外值得一提的是,如果需要反轉,可以使用'console.dir'(即列出屬性而不是dom對象的字符串表示) – MinusFour

+0

謝謝,這是有道理的。 – Roy

0

document是DOM的根,不同於全球瀏覽器作用域windowconsole.log(document.body);記錄DOM元素,而不是JavaScript對象。

+1

如果'document'是DOM的根,那麼document.documentElement是什麼呢?另外,「DOM元素」和「JavaScript對象」是相同的,DOM節點在控制檯中以特殊方式呈現。 – Xufox

+0

@Xufox當然有點沉悶了。但是,你如何解釋'document === window; // false'? – reergymerej

+0

它們不是同一個對象。不確定你在問什麼。 'window'是'Window','document'是'Document'。他們有不同的目的。 – Xufox

相關問題