Javascript 根据价格将整笔钱分成几部分,并在jquery中显示余额
Javascript 根据价格将整笔钱分成几部分,并在jquery中显示余额,javascript,jquery,Javascript,Jquery,var paidamount=500; var金额=0; var余额=0; var列表=[]; $(“表tr”)。每个(函数(){ var$this=$(this); var price=$this.find('td:nth child(1)').text(); 如果(paidamount>=parseFloat(价格)){ paidamount-=parseFloat(价格); 支付金额=价格; 余额金额=0; }否则{ 支付金额=0; 余额金额=价格; } 列表.push({ 价格:价格,
var paidamount=500;
var金额=0;
var余额=0;
var列表=[];
$(“表tr”)。每个(函数(){
var$this=$(this);
var price=$this.find('td:nth child(1)').text();
如果(paidamount>=parseFloat(价格)){
paidamount-=parseFloat(价格);
支付金额=价格;
余额金额=0;
}否则{
支付金额=0;
余额金额=价格;
}
列表.push({
价格:价格,
已付金额:已付金额,
结余:结余金额
});
});
对于(变量i=0;i
300
190
150
150
150
150
我已更新了您的代码以解决问题。修复方法之一是删除$(“table tbody”).empty()代码>语句脱离for循环,只需运行一次。如果将其保留在for循环中,则每次迭代后都会清空表,并且只追加最后一行
其次,我简化了$(“table tr”).each()函数中的逻辑。您应该将特定行的所有局部变量移动到此函数中,从逻辑上讲,这更有意义,因此您不必在每次迭代后重置它。逻辑很简单,您可以将tempamunt
设置为等于startingAmount
(500)减去行的价格。然后将amountPaid
设置为等于price
,balanceAmount
设置为等于0
。假设他们已经全额支付。然后检查tempaument
是否仍然大于0
,如果是,则其已正确全额支付,否则您没有足够的钱支付。在这种情况下,只需更新已支付金额
以等于剩余金额,此时为起始金额
,并更新余额金额
以等于价格
减去起始金额
。最后将startingAmount
设置为0
,这样以后的所有迭代都将导致else
语句运行
var启动金额=500;
var列表=[];
$(“表tr”)。每个(函数(){
var$this=$(this);
var price=parseFloat($this.find('td:nth child(1)').text());
var tempAmount=起始金额-价格;
var金额=价格;
var余额金额=0;
如果(tempAmount>0){
起始金额=临时金额;
}否则{
支付金额=启动金额;
余额金额=价格-起始金额;
启动量=0;
}
list.push({
价格:价格,
已付金额:已付金额,
余额:余额金额
});
});
$(“表tbody”).empty();
对于(变量i=0;i
300
190
150
150
150
150
愿它有所帮助!这很清楚让我在我的代码上试试给我一分钟