Javascript 遍历XML元素在IE8中不起作用
我是javascript的新手,但以下是我要做的。请注意,我四处寻找答案,但没有任何帮助 我正在尝试遍历XML元素,但它在IE8中不起作用。不过,它在Firefox中运行良好。我所说的不工作是指即使存在元素,它也不会进入循环内部 这是我尝试遍历的XML:Javascript 遍历XML元素在IE8中不起作用,javascript,jquery,xml,internet-explorer-8,Javascript,Jquery,Xml,Internet Explorer 8,我是javascript的新手,但以下是我要做的。请注意,我四处寻找答案,但没有任何帮助 我正在尝试遍历XML元素,但它在IE8中不起作用。不过,它在Firefox中运行良好。我所说的不工作是指即使存在元素,它也不会进入循环内部 这是我尝试遍历的XML: var $anXml = $('<node id="anID" inline="0" leaf="true">' +'<sub_node1>Text \(more text\)<
var $anXml = $('<node id="anID" inline="0" leaf="true">'
+'<sub_node1>Text \(more text\)</sub_node1>'
+'<sub_node2>Text \(more text\)</sub_node2>'
+'</node>');
alert('children before loop: ' + $anXml.children.length);
$anXml.children().each(function() {
alert('child traversed!');
var $aChild = $(this);
$anotherXml.data(this.nodeName.toLowerCase(), $aChild.html());
});
alert('children after loop: ' + $anXml.children.length);
以下是警报的输出:
children before loop: 2
children after loop: 2
“孩子穿越了!”永远不会显示
任何想法都将不胜感激。如果
$anXml.children.length
起作用,它不是一个jQuery对象,因为它是本机元素的属性,而不是jQuery,因此您必须将其包装:
$($anXml).children().each(function() {
alert('child traversed!');
var $aChild = $(this);
$anotherXml.data(this.nodeName.toLowerCase(), $aChild.html());
});
没用。我注意到它适用于其他文档。我想知道这是否与我的anXml的结构方式有关。在您尝试使用它之前,XML是用$.parseXML解析的吗?它是有效的XMLNo。我只是使用.attr访问一些属性。XML就是我上面提到的,我相信这是一个有效的XML,它可以在FireFox中使用。如果它无效,它在FireFox中会工作吗?在循环显示“undefined”后发出警报($anotherXml.data('sub_node1'))。不确定这是否有助于理解正在发生的事情。我必须使用$.parseXML()才能使用JQuery函数,例如.find()。但是,循环仍然不起作用。请注意,我必须创建一个字符串XML,将其传递给$.parseXML(),然后将其包装。也就是说,我遵循jQuery.parseXML()文档。