在HTML文档中,我要求使用外部JavaScript代码(HMTL中的<script src="...">
),该代码使用AJAX加载外部.xml文件:
暂不分析myFunction(xml)
。我将在下面解释
var xhttp, xmlDoc, txt, x, i;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
// Support IE5 and IE6
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "http://sample.com/db.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
document.getElementById("demo2").innerHTML = xmlDoc.getElementsByTagName("price")[0].childNodes[0].nodeValue;
var EXAMPLE = document.querySelectorAll('product[code="DVR4H1004N1P"]')[0].getElementsByTagName("price")[0].innerHTML; // Test line 1
alert(EXAMPLE); // Test line 2
}
myFunction(xml)
解释了(现在按照我的解释检查):
获取XML文档
将HTML 中id="demo2"
元素的内容更改为第一个值(.nodeValue)([0])XML中的<price>
元素 。
预期结果是&#34; 94 600&#34;,对吗?这就是它的回报。到目前为止没有错误。
但那不是我真正想要的,我实际上想要将HTML 中id="demo2"
的内容更改为里面<price>
元素的值XML中的<product code="DVR4H1004N1P">
。这应该返回相同的值,&#34; 94 600&#34;。 不要问,我只需要这样做。
我所做的最接近的解决方案基本上是myFunction(xml)
的第三个动作:
<price>
元素的值。关于第三项操作,问题是它在HTML 中而不是在XML中查找<product code="DVR4H1004N1P">
的值。我的困难是我无法弄清楚如何在JavaScript中的变量声明中访问/选择XML文档。
例如,我没有使用<price>
而是指向文档,而是指向具有XML文档的变量(又名&#34; xmlDoc&#34;),如document.querySelectorAll('product[code="DVR4H1004N1P"]')[0].getElementsByTagName("price")[0].innerHTML;
但它不起作用。如果您需要额外的信息,请不要犹豫,在评论中提问!
答案 0 :(得分:1)
你可以这样做,也许:
var text = '<catalog><product code="DVR4H1004N1P"><title>DVR de 4 Canales Tribrido (AHD, Análogo y Digital, IP)</title><code>DVR4H1004N1P</code><price>94 600</price></product><product code="DVR81008"><title>DVR de 8 Canales (Full D1, 960H)</title><code>DVR81008</code><price>185 000</price></product></catalog>';
var xmlDoc = $.parseXML(text);
var products = $(xmlDoc).find("product");
var price = products.each(function(i, j){
if($(j).attr("code") == "DVR4H1004N1P"){
$("#demo").html(($(j).find("price")[0].innerHTML));
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="demo">