Javascript childNodes[]与IE7和IE8不在IE9中工作
我有一些代码可以在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]; 但是
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)