我的javascript冻结屏幕,没有错,只是导航器不起作用

问题描述 投票:0回答:2

我遇到了我已经完成的脚本的问题,这个脚本应该分配给不同的字段。

实际上这里是脚本,我会在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所有的作品,如果我写得更多,它也有效。

php javascript field freeze allocation
2个回答
1
投票

问题出现在周期中,

你有

if(temp > 0)

else if(temp < 0)

但是如果

temp=0

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


2
投票

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

function itemSum(items){
    var sum = 0;

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

'sum'的值变成了一个长串联的字符串,而不是数字。

© www.soinside.com 2019 - 2024. All rights reserved.