我有下面的黑色代码,它在Chrome&Firefox,但每次在IE上失败,它在控制台选项卡中返回"未定义"。
<html>
<head>
<script type="text/javascript" charset="utf-8" src="/js/jquery-latest.js"></script>
<script>
$(document).ready(function()
{
test();
});
function test()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","/xml/products.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var list = xmlDoc.getElementsByTagName("product");
console.log(list[0].childNodes[1].innerHTML);
}
</script>
</head>
</html>
我使用的XML如下:
谢谢你抽出时间。
编辑:jQuery ajax版本也不工作:
var xmlDoc;
$.ajax({
type: "GET",
url: "/xml/products.xml",
dataType: "xml",
success: function (xml) {
xmlDoc = xml;
var list=xmlDoc.getElementsByTagName("product");
console.log(list[1].childNodes[1].innerHTML );
}
});
不知道为什么这在Chrome和FF中有效,它实际上不应该1。
您正在加载一个XML文档,并且正在成功地选择一个XML元素节点。这些不具有innerHTML
属性2。如果您真的需要获得xml文档的标记,那么您应该使用XMLSerializer
(也许您只是在寻找.textContent
?)。
var el = list[0].childNodes[1];
console.log(new XMLSerializer().serializeToString(el));
然而,oldIE甚至不知道这一点,您需要为它们使用el.xml
3。
1:至少在旧版本中没有。另请参阅innerHTML与XML元素一起工作吗
2:显然,DOM解析规范现在在所有DOM元素上都包含了一个通用的innerHTML
属性
3:请参阅JavaScript:Replacement for XMLSerializer.serializeToString()