jquery无法读取undefined的属性'getAttribute'

时间:2015-03-16 21:17:30

标签: javascript jquery soap exchangewebservices

我正在使用的javascript在firefox中工作完全正常,但是在chrome和safari上运行时出现此错误。我不完全确定它为什么会失败。

        var response = asyncResult.value;
        if (window.DOMParser) {
            var parser = new DOMParser();
            xmlDoc = parser.parseFromString(response, "text/xml");

        }
        else 
        {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.loadXML(response);
        }

        console.log(xmlDoc);
         var changeKey = xmlDoc.getElementsById("t:ItemId")[0].getAttribute("ChangeKey");

控制台显示此消息但是当我将它设置为console.log()

时输出xmlDoc就好了
Uncaught TypeError: Cannot read property 'getAttribute' of undefined        r.js 
soapToGetItemDataCallback    r.js
r.onreadystatechange    outlookwebapp-15.js:21 
$h.EwsRequest.$1x_1    outlookwebapp-15.js:21 
(anonymous function)   outlookwebapp-15.js:21

1 个答案:

答案 0 :(得分:1)

问题是你试图通过ID获取元素并使用[0],我想你想要getElementsByTagName,因为结果是未定义的,代码应该是:

var changeKey = xmlDoc.getElementsById("t:ItemId").getAttribute("ChangeKey");

或者如果"t:ItemId"是一个集合:

 var changeKey = xmlDoc.getElementsByTagName("t:ItemId")[0].getAttribute("ChangeKey");