我正在尝试通过JavaScript从XML文件中选择某些元素,我已经在Firefox,Chrome和IE9 +中使用它,但IE8被证明是一个真正的绊脚石,我使用下面的代码返回XML文件:
function httpGet(theUrl) {
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', theUrl, false);
xmlHttp.send();
if(window.DOMParser) {
var parser = new DOMParser();
var doc = parser.parseFromString(xmlHttp.responseText, 'text/xml');
return doc;
}
else {
var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
xmlDocument.async = false;
xmlDocument.loadXML(xmlHttp.responseText);
return xmlDocument;
}
}
然后我使用下面的选择器来列出XML文件中的某些项目:
var rssData = httpGet(rssFeed);
var allTitles = convertToArray(rssData.getElementsByTagName('title'));
var allDates = convertToArray(rssData.getElementsByTagName('pubDate'));
var allText = convertToArray(rssData.getElementsByTagName('text'));
然后我将数组项连接在一起,并将项innerHTML
设置为该值(如果需要,我可以提供此代码)
奇怪的是,IE8返回正确数量的项目,但每个项目的值undefined
与实际值相反,例如“你好世界”
我一直在争吵几个小时但仍然空白......有没有人知道我做错了什么?
编辑:这里要求的是转换为数组函数
function convertToArray(htmlCollection) {
var nodes = [];
var collectionLength = htmlCollection.length;
for(i = 0; i < collectionLength; i++) {
nodes.push(htmlCollection[i]);
}
return nodes;
}
答案 0 :(得分:1)
问题是你必须使用.text
而不是.textContent
来获取ie8,因为textContent
属性在ie中不存在。
您可以在MDN中看到textContent仅适用于ie 9 +