2014-09-02 22 views

回答

0

「當DOM被加載但不是頁面」並不真正意義。在加載HTML時,瀏覽器會將其呈現爲您在屏幕上看到的靜態頁面。 DOM是允許與這些元素進行交互的表示。

例如,我可以在JavaScript中創建對象然後操縱它們,但我只操作了一個簡單的對象。一個DOM對象看起來像是同一個對象,但它與一個相關的[X | XH | H] TML對象綁定在一起;所以當我在這個對象上調用一個方法時,它不僅與一個信息容器交互,而且還與頁面上的組成節點交互。因此,您不能在尚未呈現的元素上使用DOM方法。

有形例如:

/* Manipulating a standard JavaScript object */ 
var obj = { firstProp: "InitialValue", 
      secondProp: "somethingelse", 
      aMethod: function(){ this.firstProp = "Changed" } 
      } 
    console.log(obj.firstProp); // Ouput is "InitialValue" 
obj.aMethod(); 
    console.log(obj.firstProp); // Output is "Changed", but nothing is effected other than that value 

/* Here is a method called on a DOM element; pretend it's an input/text */ 
var obj2 = document.getElementById("testId"); 
    obj2.value = "This is your new text box value"; 

在第二個例子,你看,我不只是改變任意一個對象的值。我已經改變了該HTML對象的呈現形式。

這是我現在可以考慮解釋的最好方法。

+0

是的,謝謝你,我瞭解一點原理它是如何工作的 – mizanoviche 2014-09-02 20:39:45

+0

我會繼續使用HTML示例,因爲它們易於掌握。當瀏覽器解析頁面時,它會保留對元素的位置的引用,並且已經知道可用的方法;包括它的父/子對象。所以在上面的例子中,'document.getElementById'是一個選擇器方法,它在obj2中存儲一個引用(其中document是頂層節點,「testId」是子節點,「get ...」是選擇方式) 。然後'value'是一個可用的方法來改變相應的文本框的值。如果這不明確,那麼我不認爲我完全理解你的問題。 – Gary 2014-09-02 20:50:26