我有一个来自JQuery对象(称为$xml)的API请求的xml响应。为了获取我需要的信息,我使用了:$xml[0].childNodes[0].childNodes[1].childNodes[1].textContent。这在Chrome、Firefox和IE10+上都适用,但是IE=<9并不用相同的方式来表示对象。
在Chrome、Firefox和IE10+中工作的代码:
$(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);
}
});
});在IE中的调试器中,它显示了对象数组的索引--但是当其他浏览器显示‘子“和'childNodes’这样的后代时,较低的IE只显示0: [object],没有任何选项可以在所述[object]中展开和查看。
如何遍历JQuery对象的内容,以一种在IE7+以及Chrome和火狐中工作的方式?
发布于 2016-03-28 18:33:42
找到了另一种方法来实现这一点,这是更多的跨浏览器兼容和易于阅读。
$(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()与xml字段的NodeNames结合使用,可以更灵活地遍历响应。.html()适用于Chrome和火狐(可能还有边缘),但旧的IE需要.text()来返回所需的信息。
这对我起了作用,我可以用"Description“或我想要附加功能的xml的任何其他参数来if..else。
https://stackoverflow.com/questions/36264432
复制相似问题