Javascript push在if语句中不起作用
我有下面的代码,但是items.push在if语句中时不起作用。如果在结束}之前取消对行的注释,则items.push将按预期工作Javascript push在if语句中不起作用,javascript,arrays,loops,Javascript,Arrays,Loops,我有下面的代码,但是items.push在if语句中时不起作用。如果在结束}之前取消对行的注释,则items.push将按预期工作 for (i = 0; i < len; i += 1) { row = resultexpense.rows.item(i); t.executeSql('SELECT * FROM expensepayments WHERE Barcode = ?', [row.barcode], function(t, res
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>');
}
我不确定变量的类型,它是数字还是字符串
如果typeof row.amount==string或typeof myrowpaid.amount==string,则不会执行if条件
当然,您的变量是数字类型,请使用parseInt函数将其转换为数字
if (parseInt(row.amount, 10) > parseInt(myrowpaid.Amount, 10)){
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>');
}
如果您还没有减速items变量,那么添加var items=[];在使用items变量之前,executeSql调用是异步的。回调中的代码只有在数据库响应后才会运行,而数据库响应将在整个循环完成后运行。此外,您可能还应该编辑上一个问题,因为这是同一个问题。可能是重复的,那么正确的语法是什么。抱歉,我是JavaScription新手,可能会出现各种问题,但真正的问题是,他试图在所有查询回调完成之前使用数组。他说items.push在if条件之外工作,因此我认为他可能已经将items变量声明为数组。但是这个alertrow.amount-myrowpaid.amount;通知正确的结果40,以便两个金额numbers@K.K是的,但是列表的更新是在异步回调函数中完成的。在查询完成之前,更新不会发生。@user1081978:alertrow.amount+myrowpaid.amount是多少;说?