2015-04-02 61 views
1

如何找到未連接的節點?Javascript DOM:查找未連接的節點

示例代碼:

var newElem = document.createElement('div'); 
newElem.id = 'newDiv'; 
newElem = null; 

如何可我發現自己剛剛創建的div

document.getElementById('newDiv')不起作用,因爲div未附加到文檔。

+0

爲什麼你會認爲你可以做到這一點,如果你將它的引用設置爲'null'? – 2015-04-02 15:14:19

+0

除非您將其保存在您自己的數據結構中並使用您自己的搜索工具搜索它,否則無法找到它。 – Pointy 2015-04-02 15:14:30

+0

這實際上就是你如何刪除節點。所以不,你不能收回。 – riv 2015-04-02 15:16:09

回答

1

document.getElementById('newDiv')不起作用,因爲div不是 附加到文檔。

沒錯。您已經存儲了對您創建的元素只有的引用。那麼爲什麼不使用它呢?

將其設置爲null並詢問如何找到它是單向性的。

所有DOM方法都作用於的節點,其中是DOM或DOM的一部分。如果不是,如果你是故意設置你自己的參考null,無論如何可能是原因,你不能再引用它,因爲沒有更多的地方引用它,因此它是垃圾收集。

3

在將newElem引用設置爲null後,該節點被垃圾收集。它不再存在,而且你找不到它。

當您沒有將節點附加到DOM部件時,不能使用任何DOM方法在該部件中找到它。

0

沒有使用newElem = null;與否的事,document.getElementById('newDiv')將返回null因爲您創建的DOM <div id="newDiv"></div>沒有連接到document

您可以使用:

var newElem = document.createElement('div'); 
newElem.id = 'newDiv'; 
var existsElem = document.getElementById("any-existing-element"); 
existsElem.appendChild(newElem); // attach your created element to document 

然後document.getElementById("newDiv")將獲得新創建的元素。

注意existsElem.appendChild(newElem);後執行,即使執行newElem = null;document.getElementById("newDiv")仍然得到了DOM <div id="newDiv"></div>

相關問題