我正在使用的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
答案 0 :(得分:1)
问题是你试图通过ID获取元素并使用[0]
,我想你想要getElementsByTagName
,因为结果是未定义的,代码应该是:
var changeKey = xmlDoc.getElementsById("t:ItemId").getAttribute("ChangeKey");
或者如果"t:ItemId"
是一个集合:
var changeKey = xmlDoc.getElementsByTagName("t:ItemId")[0].getAttribute("ChangeKey");