【发布时间】:2015-07-24 13:56:38
【问题描述】:
我目前遇到了 getAttribute() 方法的问题。
这目前在 IE8 中有效,但在 IE11 中我收到错误对象不支持属性或方法'getAttribute'。
当我在同一点使用 hasAttribute() 时会发生同样的问题。
当你到达 if(discounts[j].getAttribute("id") == discountId) 时抛出错误,如果我尝试 console.log id,我得到 未定义。
我确实设法通过在兼容模式下运行使其在 IE11 中工作,但这不是一个选项。
这是我目前在下面使用的方法。
if(discountsXml != null && discountsXml.documentElement != null) {
var invItems = discountsXml.documentElement.getElementsByTagName("invItem");
var invItemsCounter = invItems.length;
var i = 0;
for(i=0; i<invItemsCounter; i++) {
if(invItems[i].getAttribute("id") == invItemId) {
var discounts = invItems[i].childNodes;
var discountsCounter = discounts.length;
var j = 0;
for(j=0; j<discountsCounter; j++) {
if(discounts[j].getAttribute("id") == discountId) {
discount = true;
}
}
}
}
}
【问题讨论】:
-
1.它在其他浏览器中是否有效?您是否尝试过使用
console.log(invItems[i])检查对象以查看其实际包含的内容? discountsXml 包含什么? (我可以从名称中猜到,但要明确)。最后,您能否在此处或 jsfiddle 之类的地方提供该问题的功能演示?将其缩减为重现问题所需的最少代码。 -
你没有包含足够的关于你的网页的细节来提供很多有用的建议,但听起来你在代码示例之外的某个时候依赖于遗留行为'已经发布了。 IE11 移除了对many legacy behaviors 的支持,转而采用更现代的方法。代码在 IE8 和遗留文档模式下工作的事实说明了这一点。例如,您如何填充 XML 数据?比较IE11和IE8的数据类型;你应该找到你的问题。
标签: javascript html internet-explorer nodelist getattribute