Javascript childNodes[]与IE7和IE8不在IE9中工作

Javascript childNodes[]与IE7和IE8不在IE9中工作,javascript,internet-explorer,internet-explorer-9,Javascript,Internet Explorer,Internet Explorer 9,我有一些代码可以在IE7和IE8中使用,但不能在IE9中使用 var table = document.getElementById('RadGrid_ctl01').childNodes[2]; 这在IE9中不起作用,现在我确实读到了IE9计算空格等,因此索引将与IE7和IE8中的索引不同,所以我调试并在将索引从2更改为4时发现了相同的值,如下所示: var table = document.getElementById('RadGrid_ctl01').childNodes[4]; 但是

我有一些代码可以在IE7和IE8中使用,但不能在IE9中使用

var table = document.getElementById('RadGrid_ctl01').childNodes[2];
这在IE9中不起作用,现在我确实读到了IE9计算空格等,因此索引将与IE7和IE8中的索引不同,所以我调试并在将索引从2更改为4时发现了相同的值,如下所示:

var table = document.getElementById('RadGrid_ctl01').childNodes[4];
但是,当我稍后尝试使用此代码访问表对象时

var editor = table.childNodes[i].childNodes[j].childeNodes[0]
变量编辑器将获得IE7和IE8中的预期值,但在IE9中它将变为null,因为childNodes[j]没有任何子节点。我不知道这是什么原因。 i和j都从0开始


有人知道我做错了什么吗?

IE9的行为是正确的,低版本是错误的。 这个问题是由两个html标记之间的空白引起的,这将导致文本节点

更新:添加了示例

而第二个标记将导致:

- ul
-- (text)
-- li
--- (text)Foo
-- (text)
-- li
--- (text)Bar
-- (text)
由于文本节点不能有任何子节点,这会导致Javascript以静默方式失败

可能的解决办法

一种解决方案是去掉空文本节点。我曾经为这个问题写过一篇文章

更新:


似乎是一个更可靠的解决方案,但我没有检查它的浏览器兼容性。

IE9的行为是正确的,低版本是错误的。 这个问题是由两个html标记之间的空白引起的,这将导致文本节点

更新:添加了示例

而第二个标记将导致:

- ul
-- (text)
-- li
--- (text)Foo
-- (text)
-- li
--- (text)Bar
-- (text)
由于文本节点不能有任何子节点,这会导致Javascript以静默方式失败

可能的解决办法

一种解决方案是去掉空文本节点。我曾经为这个问题写过一篇文章

更新:


这似乎是一个更可靠的解决方案,但我没有检查它的浏览器兼容性。

你在问什么?getElementById问题?还是按子索引访问问题?如果您有关于DOM选择的问题,如果我们不知道您的标记是什么样子,那么很难回答。是的,我选择了一个错误的标题,我会看看我是否也能提供标记。您在问什么?getElementById问题?还是按子索引访问问题?如果您有关于DOM选择的问题,如果我们不知道您的标记是什么样子的,那么很难回答。是的,我选择了一个不好的标题,我会看看是否我也不能提供标记。工作非常出色!非常感谢。工作很有魅力!非常感谢。
- ul
-- (text)
-- li
--- (text)Foo
-- (text)
-- li
--- (text)Bar
-- (text)