【问题标题】:Nodelist getAttribute IE11 JavaScript ErrorNodelist getAttribute IE11 JavaScript 错误
【发布时间】: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


【解决方案1】:

您实际上并没有提出上述问题,所以我不确定最佳答案,
但是您是否可以像通常推荐的那样使用 id 属性而不是 id 属性?

invItems[i].id vs invItems[i].getAttribute("id")

http://www.w3schools.com/jsref/prop_html_id.asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2018-12-08
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多