getElementByID()。parentNode返回null

时间:2010-10-15 11:50:56

标签: javascript

出于某种原因,这种情况非常模糊。它有时工作,有时却不工作。同一行代码,对于同一父级下的不同“myid”,行 -

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>

在这个Html中,假设我获得了Span元素的ParentNode,但是我没有为Input文本元素获得相同的parentNode。另外一个奇怪的事情是,我刚刚添加了一个检查,说明getelementbyid是否为null,然后检查其parentNode。然后,如果parentNode不为null,则进一步添加,然后执行刷新操作。现在控件不会进入parentNode not null条件。

2 个答案:

答案 0 :(得分:6)

如果页面上的两个或多个元素共享相同的“id”值,则getElementById(可能)返回节点列表而不是DOM引用。节点列表实例没有“parentNode”属性。

不要为多个元素重复使用“id”值是这个故事的寓意。

答案 1 :(得分:1)

应该是document.getElementById("myid").parentNode吗?