2010-10-15 140 views
4

由於某種原因,這種情況非常模糊。有時它的工作有時不是。相同的代碼行,對於同一父代下的不同「myid」,行 -getElementByID()。parentNode返回null

document.getElementById("myid").parentNode返回null。

我確定元素「myid」不是根元素,它的父元素是需要返回的DIV。我正在使用Firefox 3.6.10版本。

任何人都可以提出任何理由,爲什麼會發生這種情況?

編輯:這裏的「myid」是某種文本框或任何其他控件元素。但是父節點總是DIV。我們添加的任何控件總是包裝在DIV下。所以基本上當屏幕上的東西刷新時,我們得到父節點並替換innerhtml。 innerhtml可以是任何東西。下面給出

是我的HTML -

<div style="height: 334px; width: 769px; position: relative;"> 

    <span style="display: inline-block; height: 13px; width: 61px; position: absolute; left: 393px; top: 84px;" bizappid="System856UserGroupAppPoint156d5elabel300" tabindex="-1" id="System856UserGroupAppPoint156d5elabel300">User Group</span> 

    <input type="text" style="height: 20px; width: 221px; position: absolute; left: 503px; top: 77px;" bizappid="System856UserGroupAppPoint156d5etextBox190" class="formtextbox" tabindex="400" id="System856UserGroupAppPoint156d5etextBox190" readonly="readonly" name="System856UserGroupAppPoint156d5etextBox190"> 
</div> 

在這個網站中,假設我正在爲ParentNode SPAN元素,但我沒有得到的輸入文本元素相同parentNode。還有一件更奇怪的事情是,我只是添加了一個檢查,說明getelementbyid是否爲空,然後檢查其父節點。如果parentNode不爲空,則進一步添加,然後執行刷新操作。現在控件不會進入parentNode非null狀態。

+0

有沒有改變DOM的改變?你可以張貼更多的代碼,特別是。 HTML? – Nivas 2010-10-15 11:55:47

+0

您是否執行了一些可能導致元素或其父元素死亡的JavaScript DOM操作? – 2010-10-15 11:55:59

+0

@Nivas - DOM在「myid」元素的子級上發生了變化,但父級沒有變化。無法發佈任何代碼,但編輯了我的問題更多的細節。希望它可以幫助你。 – 2010-10-15 12:05:44

回答

6

如果頁面上的兩個或多個元素共享相同的「id」值,則getElementById(可能)會返回節點列表,而不是DOM參考。節點列表實例沒有「parentNode」屬性。

不要爲多個元素重複使用「id」值是這個故事的寓意。

+0

您應該添加一些調試代碼,或者在調試器中設置一個斷點,並找出getElementById()返回的內容。 – Pointy 2010-10-15 13:24:55

+0

有多個ID,具有諷刺意味的是,在渲染時驗證uniqueID時存在一個錯誤。謝謝哥們。 – 2010-10-15 13:34:55

1

應該是document.getElementById("myid").parentNode

+0

我只使用了document.getElementById(「myid」)。無論如何,編輯我的問題。 – 2010-10-15 12:42:06

+0

我認爲Cauly正在討論'getElementById'而不是'getElementByID'(函數名稱是個案感言) – romaintaz 2010-10-15 12:59:58

+0

@romaintaz - 這是我的拼寫錯誤。再次編輯問題。它的ID只有小。 – 2010-10-15 13:05:43

相關問題