函数循环内部的jquery函数

时间:2012-03-14 16:41:38

标签: jquery sqlite loops

嗨,我在移动应用程序中,我有以下问题。

我想从表格账单中为每个条形码从表格账单中选择数据。

这是我的代码

        t.executeSql('SELECT barcode, amount, receiptno FROM billpayments WHERE receiptno > 0', 
            [], function(t, resultcollect) {
                len = resultcollect.rows.length;

                    for (i = 0; i < len; i += 1) {
                        row = resultcollect.rows.item(i);
                        t.executeSql('SELECT barcode, buildingcode, flatdescription FROM bill WHERE barcode = ?', 
                            [row.barcode], function(t, collectaddress) {
                                mybill = collectaddress.rows.item(0);
                                list.append('' + mybill.buildingcode + ',' + mybill.flatdescription + ',' + row.receiptno + ',' + row.amount + '</br>');
                        });


                    }
                    tameio = tameio.toFixed(2);
                    list.append('<table border="1">' + items.join('\n') + itemspay.join('\n') + '</table><p>' + tameio + '');
            });

但在html追加中我收到row.receiptno和row.amount所有条形码的最后一个值......

请帮助我被困住。

1 个答案:

答案 0 :(得分:0)

在迭代过程中,row被一遍又一遍地覆盖。要解决此问题,请使用辅助函数创建一个新范围,其中row是局部变量:

function dummy(i) {
    var row = resultcollect.rows.item(i);             // <-- Local variable
    t.executeSql('SELECT barcode, buildingcode, flatdescription FROM bill WHERE barcode = ?', 
        [row.barcode], function(t, collectaddress) {
            var mybill = collectaddress.rows.item(0); // <-- LOCAL variable!
            list.append(mybill.buildingcode + ',' + mybill.flatdescription
                         + ',' + row.receiptno + ',' + row.amount + '</br>');
    });
}
for (i = 0; i < len; i += 1) {
    dummy(i);
}