由于某种原因,这个问题发生得非常模糊。有时候它能正常工作,有时候却不能。同样的代码行,在相同父元素下的不同“myid”中,该行 -
document.getElementById("myid").parentNode
返回null。
我非常确定元素“myid”不是根元素,它的父元素是需要返回的DIV。我正在使用Firefox 3.6.10版本。
是否有人能够建议任何可能出现这种情况的原因?
编辑:这里的“myid”是一些文本框或其他控件元素。但是parentnode始终是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不为空,则检查它的parentNode。然后进一步添加了如果parentNode不为空,则执行刷新操作。现在控件不会进入parentNode不为空的条件。
getElementById
调用的代码,那将会很有帮助。如果getElementById
确实返回文档内的节点,则parentNode
不可能为空。因此,一定发生了其他事情。 - Pointyvar obj = document.getElementById("System856UserGroupAppPoint156d5elabel300"); if( obj ) { var parentNode = obj.parentNode; }
。 - Sachin Shanbhag