javascript - 在 IE 11 中解析 HTMLCollection 对象

标签 javascript internet-explorer dom xmldocument

在开发通过 xml 与后端服务对话的自定义应用程序时,我在 IE 11 中遇到了一个奇怪的问题。

奇怪的是,firefox 和 chrome 都能解析我收到的响应,但是 IE 失败了,我完全迷路了..

如果有人能看一看,我将不胜感激。

我将发布来自服务器的示例响应,xml 文档的简化版本,但您会明白的

<root>
  <wizardhead>
    <inputparametar/>
    <outputparametar>69439</outputparametar>
    <iserror/>
    <repeaterror/>
    <errormessage/>
    <actionstorename>dbo.ncspWizardExec</actionstorename>
    <wizardname>459570</wizardname>
  </wizardhead>
</root>

解析该 xml 以提取特定用途的值的代码和平在这里:

    window.ro = ro; // var ro is the source XML as string (saving to global var just for ease of testing)
    var fnd = document.getElementsByTagName.bind( ro ); // bind 'gebtn' on ro document
    var hdd = fnd('wizardhead')[0] ; // reference wizardhead WORKS
    var hd2 = hdd.getElementsByTagName('outputparametar')[0].innerHTML; // this FAILS!

我在开发人员工具 (F12) 中看到的错误在线,我需要比较 hd2 值:

像这样 => ... (1 == hd2.toString() )

无法获取未定义或空引用的属性“toString”

devtools 中的 Watches 面板显示当前的环境变量就像..

hdd => [对象元素]

hd2 => 未定义

谢谢你

最佳答案

好吧,几天后..我找到了解决问题的方法!

希望这会帮助有类似问题的人:)

在这里阅读 w3c 文档:w3c docs我发现我可以通过两种方式引用元素..

element = collection.item(index)
element = collection[index]

所以我将它应用到我的代码中,例如这一行

var hd2 = hdd.getElementsByTagName('outputparametar')[0].innerHTML

这样调用:

var hd2 = hdd.getElementsByTagName('outputparametar').item(0).textContent

你看,它成功了:)

所以我猜 IE 在解析和引用成熟度指数 > 1 的子节点的方式上存在一些问题(因为它成功地解析了第一级!)但是在 dom 中不知何故遇到了一些权限问题..

好的,吸取教训,改用第二种方法,我们没有跨浏览器问题,至少现在:)

干杯,k

关于javascript - 在 IE 11 中解析 HTMLCollection 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27402431/

相关文章:

jquery - Ajax 添加 HTML 不继承页面样式 - jQuery Mobile

javascript - 在 jQuery 选择中混合 Javascript 变量和 DIV ID 名称

javascript - 如何根据浏览器大小更改元素的顺序?

javascript - $(this) 未定义,并且不使用相同函数返回选择器

javascript - Backbone/RequireJS 和多个模型

javascript - 为什么这在 Internet Explorer 上不起作用? [jQuery、单选、选择器]

css - 位置绝对和相对 IE7 问题

internet-explorer - Windows 8 - IE 无法访问主机文件中列出的站点

特定容器内的 JavaScript getElementsByTagName

javascript - Chrome 没有运行 javascript 垃圾收集器