返回XML文件时,getElementsByTagName在IE中不起作用?

时间:2013-04-24 14:33:40

标签: javascript xml internet-explorer-8

我正在尝试通过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;
    }

1 个答案:

答案 0 :(得分:1)

问题是你必须使用.text而不是.textContent来获取ie8,因为textContent属性在ie中不存在。

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