2014-12-02 76 views
0

我在我的项目中使用以下标记代码。IE 8 nextSibling属性表现奇怪

<td> 
<A style="FONT-SIZE: small" id=MainContent_RefDataMgr_GridRegion_lblRegionName_8 title="Click to select row" onclick=javascript:OnRowClick(this); href="javascript:__doPostBack('ctl00$MainContent$RefDataMgr$GridRegion$ctl10$lblRegionName','')">test </A> 
    <INPUT id=MainContent_RefDataMgr_GridRegion_hdnRegionId_8 value=82 type=hidden name=ctl00$MainContent$RefDataMgr$GridRegion$ctl10$hdnRegionId> 
</td> 




function OnRowClick(objRow) {   
     var hdnSelectdGridRowRegionId = document.getElementById('<%=hdnGridRowSelectedRegionId.ClientID%>');   
      hdnSelectdGridRowRegionId.value = objRow.nextSibling.nextSibling.value;    

    } 

所以,如果我的锚元素包含在他的文字(测试),那么objRow.nextSibling.nextSibling.value不工作的任何额外的空间,我必须使用objRow.nextSibling.value但在Chrome即使文本包含任何额外的空间或没有它的正常工作。

请让我知道这个地区可以做些什么。

在此先感谢。

+0

使用jQuery代替跨浏览器支持$(objRow).next()。val(); – frosdqy 2014-12-02 07:04:30

+0

@frosdqy感谢您的回复。目前我正在使用jquery而不是它,但我想知道原因,因为html和dom在两个浏览器中都是相同的,那么为什么我必须使用两个级别的兄弟姐妹。 – 2014-12-02 07:12:09

回答

0

在IE8中,.nextSibling(正确的,恕我直言)指的是文本节点,它紧挨着<a>

但是,文本节点没有value

你想要.nextElementSibling

+0

感谢您的回复,nextElementSibling在IE8中不可用。它在Ie9起可用。 – 2014-12-02 07:55:47

+1

查看http://stackoverflow.com/questions/6548748/portability-of-nextelementsibling-nextsibling – Tomalak 2014-12-02 08:03:16

+1

有一个polyfill用于http://compatibility.shwups-cms.ch/en/polyfills/?&id=81 – 2014-12-02 08:05:54