Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript解析XML并创建数组_Javascript_Jquery_Xml - Fatal编程技术网

使用Javascript解析XML并创建数组

使用Javascript解析XML并创建数组,javascript,jquery,xml,Javascript,Jquery,Xml,我正在浏览一堆XML,试图在javascript中构建一个数组 XML: 问题的结果是 解析TRD3066 tot=TRD3066,1,15,23.1,1 解析DIC72000280 tot=DIC72000280,1,15278.26,1,DIC72000280,1,15278.26,1 解析KRE22208 tot=KRE22208,1,15,4.65,1,KRE22208,1,15,4.65,1,KRE22208,1,15,4.65,1 这是其中的一个晚上,我只是不明白为什么end tot

我正在浏览一堆XML,试图在javascript中构建一个数组

XML:

问题的结果是

解析TRD3066 tot=TRD3066,1,15,23.1,1 解析DIC72000280 tot=DIC72000280,1,15278.26,1,DIC72000280,1,15278.26,1 解析KRE22208 tot=KRE22208,1,15,4.65,1,KRE22208,1,15,4.65,1,KRE22208,1,15,4.65,1


这是其中的一个晚上,我只是不明白为什么end tot数组不是所有的单个项目???

我认为是
造成了问题。每个
函数都应该用简单的
for
循环替换它

var items = jQuery(details).find("item");
for (var i = 0; i < items.length; i++) {
    var ret = [];
    ret[0] = jQuery(items[i]).find('prodcode').text();
    console.log("parse " + ret[0]);
    ret[1] = jQuery(items[i]).find('qty').text();
    ret[2] = jQuery(items[i]).find('tax').text();
    ret[3] = jQuery(items[i]).find('uprice').text();
    ret[4] = jQuery(items[i]).find('price').text();
    tot.push(ret);
    console.log("tot=" + tot);
}
var items=jQuery(详细信息).find(“item”);
对于(变量i=0;i
我认为是
引起了问题。每个
函数都应该用简单的
for
循环替换它

var items = jQuery(details).find("item");
for (var i = 0; i < items.length; i++) {
    var ret = [];
    ret[0] = jQuery(items[i]).find('prodcode').text();
    console.log("parse " + ret[0]);
    ret[1] = jQuery(items[i]).find('qty').text();
    ret[2] = jQuery(items[i]).find('tax').text();
    ret[3] = jQuery(items[i]).find('uprice').text();
    ret[4] = jQuery(items[i]).find('price').text();
    tot.push(ret);
    console.log("tot=" + tot);
}
var items=jQuery(详细信息).find(“item”);
对于(变量i=0;i
您多次将对同一ret数组的引用推送到tot,然后更改引用的ret数组

还要注意的是,tot.push(ret)不会将每个项目从ret推送到tot上,而是将对ret的引用推送到tot上。当您在下一轮中更改ret的内容时,tot中的每个项目看起来都在更改,因为它们都是对同一数组的引用

也许不是你想要的tot.push(ret)吧

tot.push(ret[0], ret[1], ret[2], ret[3], ret[4]);

或者根本不制作ret数组,而是在获得单个文本时将其推送。

您将对同一ret数组的引用多次推送到tot,然后更改引用的ret数组

还要注意的是,tot.push(ret)不会将每个项目从ret推送到tot上,而是将对ret的引用推送到tot上。当您在下一轮中更改ret的内容时,tot中的每个项目看起来都在更改,因为它们都是对同一数组的引用

也许不是你想要的tot.push(ret)吧

tot.push(ret[0], ret[1], ret[2], ret[3], ret[4]);

<> P>或者不做RET数组,而是在你得到它们的时候推一推单独的文本。

在for循环的中间缺少i。但还是一样的结果!还有其他想法吗?对不起,漏了几行。请再检查一下,就是这样。var-ret=[];下次清除ret数组,并使用项目索引。谢谢你,艾普!错过了我在for for循环…但还是一样的结果!还有其他想法吗?对不起,漏了几行。请再检查一下,就是这样。var-ret=[];下次清除ret数组,并使用项目索引。谢谢你,艾普!