0

javascript 内で配列を構築しようとして、一連の XML をステップ実行しています。

XML:

<?xml version="1.0" encoding="utf8" ?>
<session>
    <id>12</id>
    <name>20130520105033-0-1</name>
    <userid>0</userid>
    <changed>2013-05-20 11:16:31</changed>
    <till>1</till>
    <custid>1</custid>
    <details>
        <item>
            <prodcode>TRD3066</prodcode>
            <qty>1</qty>
            <tax>15</tax>
            <uprice>23.1</uprice>
            <price>1</price>
        </item>
        <item>
            <prodcode>DIC72000280</prodcode>
            <qty>1</qty>
            <tax>15</tax>
            <uprice>278.26</uprice>
            <price>1</price></item>
        <item>
            <prodcode>KRE22208</prodcode>
            <qty>1</qty>
            <tax>15</tax>
            <uprice>4.65</uprice>
            <price>1</price>
        </item>
    </details>
    <comment></comment>
    <customer_comment></customer_comment>
</session>

これを解析するために使用される Javascript: (詳細 xml タグを渡した後)

function parse(details){
    var ret=[];var tot=[];
    jQuery(details).find("item").each(function(){
        ret[0]= jQuery(this).find('prodcode').text();
        console.log("parse "+ret[0]);
        ret[1]= jQuery(this).find('qty').text();
        ret[2]= jQuery(this).find('tax').text();
        ret[3]= jQuery(this).find('uprice').text();
        ret[4]= jQuery(this).find('price').text();
        tot.push(ret);
        console.log("tot="+tot);
    });
    return tot;
}

問題のコンソール結果は

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

それはそれらの夜の 1 つであり、最後の tot 配列がすべての個々の項目ではない理由がわかりません??

4

2 に答える 2

3

問題を引き起こしているのは関数だと思います。単純なループ.eachに置き換える必要があります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);
}
于 2013-06-12T09:37:41.530 に答える