2016-03-28 17 views
1

私は、JQueryオブジェクト($ xml)に格納されているAPIリクエストからのxml応答を持っています。必要な情報を得るために、私は$xml[0].childNodes[0].childNodes[1].childNodes[1].textContentを使っていました。これはChrome、Firefox、IE10 +で動作しますが、IE = < 9は同じようにオブジェクトを表現しません。IE7でJQueryオブジェクトのDOM要素をトラバースする方法は?

クロム、Firefox、およびIE10 +で動作

コード:IEでのデバッガで

$(function() { 
    $.get('proxy.php', function(data) { 
    if (typeof data == 'string') { 
     console.error(data); 
    } else { 
     var test = $.parseXML(data); 
     var $xml = $(data); 
     console.log(data); 

     alert($xml[0].childNodes[0].childNodes[1].childNodes[1].textContent); 
    } 
    }); 
}); 

それは、オブジェクトの配列の[0]インデックスを示して - しかし、他のブラウザは、「子供のような子孫を表示と 'childNodes' - 下位のIEは0: [object]と表示され、展開するオプションはありません。[object]の中にあります。


私はIE7 +だけでなく、ChromeとFirefoxで動作するように、私のjQueryオブジェクトの内容を行き来することができますどのように

答えて

0

ブラウザをより互換性があり読みやすくするために、これを実現する別の方法が見つかりました。 XMLフィールドのノード名と使用

$(function() { 
$.get('proxy.php', function(data) { 
    if (typeof data == 'string') { 
    console.error(data); 
    } else { 
    var test = $.parseXML(data); 
    var $xml = $(data); 
    console.log(data); 

    alert($xml.find("Description").text()); 
    } 
}); 
}); 

.find()は、応答のより柔軟な横断を可能にします。 .html()はChromeとFirefox(そしておそらくEdge)でも問題なく動作しますが、古いIEでは希望の情報を返すのに.text()が必要です。

これは私のために働きました。if..elseの値 "Description"または機能をアタッチしようとしているxml応答の他のパラメータを使用できます。

関連する問題