2012-03-14 2 views
0

привет, я в мобильном приложении, и у меня есть следующая проблема.Функция jquery внутри функции loop

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

вот мне код

 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 для всех штрихкодов последнего значения ...

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

ответ

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); 
} 
+0

это была моя вина. thx для вашего времени – kosbou

+0

@ user1081978 Это распространенная ошибка. Я надеюсь, что вы научились никогда больше не делать этого;) –

Смежные вопросы