1

我正在尝试通过 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与实际值相反,例如“Hello world”

我已经为此奋斗了几个小时,但仍然一片空白……有人知道我做错了什么吗?

编辑:这里要求的是转换为数组函数

    function convertToArray(htmlCollection) {
        var nodes = [];
        var collectionLength = htmlCollection.length;
        for(i = 0; i < collectionLength; i++) {
            nodes.push(htmlCollection[i]);
        }
        return nodes;
    }
4

1 回答 1

1

问题是您必须使用.text而不是.textContent用于 ie8,因为textContentie 中不存在该属性。

您可以在MDN中看到 textContent 仅适用于 ie 9+

于 2013-04-24T15:57:18.650 回答