关于分摊借支的JS语句应该怎么写这个逻辑

我在实现一个需求的时候出现了困难

需求--把借支的前分摊到下面的明细里,从上往下一次分摊,举个栗子

img

下面的行数不固定,如果仅一行的话,报销的金额大于借支就是借支金额,如果报销的金额小于借支金额就是0
多行的话,就一直分摊到借支金额完成或明细的行数全部完成

逻辑好晕。也大概理解了。
借支总金额 allM
分摊内容 直接输出的地方,可以有多种形式,array,或其它。下面用的是haan1,haan2
报销行金额 input id="han1" input id="han2" input id="han3"...不固定总有极限,设它1000个够吧
allM=200
for(i=1;i<1000;i++)
{
if(document.getElementById('han'+i).value!=null)
if(allM<=0)
document.getElementById('hann'+i).innerHTML=0
else
{
document.getElementById('hann'+i).innerHTML=document.getElementById('han'+i).value
allM=allM-document.getElementById('han'+i).value
}
}
以上是js核心代码,当然,用jquery可能会好些。就不用for 1000这么多了,jquery需要你弄出大概代码来,对应去写

判断处理报销数据,如果length为1并且相等,报销金额等于借支,小于则为0,判断length大于1多行遍历赋值