아래 코드를 가지고 있지만 if
문 안에있는 경우 items.push
이 작동하지 않습니다. }
을 끝내기 전에 줄의 주석을 제거하면 items.push
이 예상대로 작동합니다. 내가 typeof
당신의 변수가 무엇인지 정말 모르겠습니다푸시가 if 문 내부에서 작동하지 않습니다.
for (i = 0; i < len; i += 1) {
row = resultexpense.rows.item(i);
t.executeSql('SELECT * FROM expensepayments WHERE Barcode = ?',
[row.barcode],
function(t, resultpaid) {
var myrowpaid,
myrowpaidlen;
myrowpaidlen = resultpaid.rows.length;
alert(myrowpaidlen); //alerts 1
if (myrowpaidlen > 0){
myrowpaid = resultpaid.rows.item(0);
alert(row.amount); //alerts 90
alert(myrowpaid.Amount); //alerts 50
if (row.amount > myrowpaid.Amount){
alert(row.amount- myrowpaid.Amount); //alerts 40
items.push('<li><a href="#displayexpense" data-description="' + row.description + '" data-buildingcode = "' + row.buildingcode + '" data-barcode="' + row.barcode + '" data-amount="' + row.amount + '" data-buildingaddress="' + row.buildingaddress + '">' + row.description + '</a></li>');
}
} else {
items.push('<li><a href="#displayexpense" data-description="' + row.description + '" data-buildingcode = "' + row.buildingcode + '" data-barcode="' + row.barcode + '" data-amount="' + row.amount + '" data-buildingaddress="' + row.buildingaddress + '">' + row.description + '</a></li>');
}
});
// items.push('<li><a href="#displayexpense" data-description="' + row.description + '" data-buildingcode = "' + row.buildingcode + '" data-barcode="' + row.barcode + '" data-amount="' + row.amount + '" data-buildingaddress="' + row.buildingaddress + '">' + row.description + '</a></li>');
}
'executeSql()'호출은 ** 비동기 **입니다. 콜백의 코드는 데이터베이스가 응답 할 때까지 실행되지 않으며 전체 루프가 완료된 후 *됩니다. – Pointy
또한 동일한 질문이므로 이전 질문을 편집했을 것입니다. – Pointy
[자바 스크립트 루프의 오류 (배열에 푸시가 작동하지 않음)] 가능한 중복] (http://stackoverflow.com/questions/12628321/error-in-javascript-loop-push-to-array-does-not-work) – Pointy