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

問題は、プロパティがieに存在しないため、ie8では.textなく使用する必要があることでした。.textContenttextContent

MDNで、textContent が 9+ でのみ利用可能であることがわかります。

于 2013-04-24T15:57:18.650 に答える