0

我的脚本遇到了麻烦,这个脚本应该为不同的字段分配一个数量。

其实这里是脚本,jsfiddle之后我会给你。

 <script type="text/javascript">
function getItems()
 {
 var items = new Array();
 var itemCount = document.getElementsByClassName("items");

 for(var i = 0; i < itemCount.length; i++)
 {
     items[i] = document.getElementById("p"+(i+1)).value;
 }

 return items;
 }

 function setItems(items,payAmt)
 {
   //document.getElementById("troppercu").value = payAmt;
   for(var i = 0; i < items.length; i++)
   {
      document.getElementById("p" + (i+1)).value = items[i];
   }
 }

 function itemSum(items)
 {
var sum = 0;

for(var i=0; i < items.length; i++)
{
    sum = items[i] + sum;
}

return sum;
 }

 function payment(inputElm)
 {
 var items = getItems();
 var payAmt = document.getElementById("montantacompte").value;
 var i = 0;
 var sum = itemSum(items);

 while(payAmt != 0 && sum != 0)
 {
     var temp = items[i] - payAmt;
     if(temp > 0)
     {
         items[i] = Math.round((temp)*100)/100;
         break;
     }
     else if(temp < 0)
     {
         items[i] = 0;
         payAmt = temp*-1;
      }
     i++;
     sum = itemSum(items);
 }

  setItems(items, payAmt);


 }
</script>

所以我有一个输入,我可以在其中写一个金额,这个金额将分配到不同的字段上。

实际上,问题是当我输入与本金相同的金额时,它会冻结屏幕。如果我写相同的金额 + 1 美分,它不会冻结。

字段上的所有信息都来自我的数据库。这是用 PHP 和 MySQL 编写的。

http://jsfiddle.net/ywAU3/

当您写入与本金相同的数量时,问题就来了,因此在这种情况下,如果您在黄色框中输入 3654.58,它会冻结屏幕我真的不明白为什么,事实上,它不应该,因为如果我写 3654.59所有的作品,如果我写更多,它也有效。

4

2 回答 2

2

您传递给此函数的值是字符串,而不是数字

function itemSum(items){
    var sum = 0;

    for(var i=0; i < items.length; i++){
        sum = items[i] + sum;
    }
    return sum;
}

'sum' 的值变成了一个长串连接的集合,而不是数字。

于 2012-10-09T06:33:54.160 回答
1

问题出在while循环中,

你有

if(temp > 0)

else if(temp < 0)

但是如果

temp=0

这会导致你的 while 循环永远工作......我包括 temp = 0 案例,然后代码工作正常:http: //jsfiddle.net/ywAU3/2/

于 2012-10-09T06:28:42.357 回答