JQuery функция внутри функционального цикла - PullRequest
0 голосов
/ 14 марта 2012

привет, я в мобильном приложении, и у меня возникла следующая проблема.

Я хочу выбрать данные из таблицы счетов для каждого штрих-кода из таблицы счетов.

вот мне код

        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 append я получаю row.receiptno и row.amount для всех штрих-кодов последнее значение ...

Пожалуйста, помогите, я застрял.

1 Ответ

0 голосов
/ 14 марта 2012

Во время итерации, 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...