Php 我的javascript冻结了屏幕,没有错误,只是导航器不工作

Php 我的javascript冻结了屏幕,没有错误,只是导航器不工作,php,javascript,field,freeze,allocation,Php,Javascript,Field,Freeze,Allocation,我在写剧本时遇到了麻烦, 此脚本应将金额分配给不同的字段 事实上,这里是脚本,我将在jsfiddle之后提供给您 <script type="text/javascript"> function getItems() { var items = new Array(); var itemCount = document.getElementsByClassName("items"); for(var i = 0; i < itemCount.length; i++)

我在写剧本时遇到了麻烦, 此脚本应将金额分配给不同的字段

事实上,这里是脚本,我将在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>

函数getItems()
{
var items=新数组();
var itemCount=document.getElementsByClassName(“项目”);
对于(var i=0;i0)
{
项目[i]=数学轮((温度)*100)/100;
打破
}
否则如果(温度<0)
{
项目[i]=0;
payAmt=temp*-1;
}
i++;
总和=项目总和(项目);
}
设置项目(项目、付款金额);
}
所以我有一个输入,我可以写一个金额,这个金额将分配到不同的字段

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

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


当你写的金额与本金相同时,麻烦就来了。因此,在这种情况下,如果你在黄色框中输入3654.58,屏幕就会冻结。我真的不明白为什么,事实上,它不应该这样做,因为如果我写3654.59,所有的都有效,如果我写得更多,它也有效。

问题在于while cycle

你有

if(temp > 0)

这会使你的while循环永远工作。。。我包括了temp=0的情况,然后代码运行良好:
问题在while循环中

你有

if(temp > 0)

这会使你的while循环永远工作。。。我包括了temp=0的情况,然后代码运行良好:

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

function itemSum(items){
    var sum = 0;

    for(var i=0; i < items.length; i++){
        sum = items[i] + sum;
    }
    return sum;
}
函数项总和(项){
var总和=0;
对于(变量i=0;i

“sum”的值被转换为一组长串接字符串,而不是数字。

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

function itemSum(items){
    var sum = 0;

    for(var i=0; i < items.length; i++){
        sum = items[i] + sum;
    }
    return sum;
}
函数项总和(项){
var总和=0;
对于(变量i=0;i

“sum”的值被转换为一组长串接字符串,而不是数字。

什么是“xace”?我在你的表格中没有看到。对不起,我写得太快了。我的意思是为了那个“案例”,我会纠正它什么是“xace”?我在你的表格中没有看到。对不起,我写得太快了。我的意思是,对于那个“案例”,我会纠正它,若你们知道的话,我从四天以来一直在寻找什么。非常感谢你的帮助。请接受我最大的尊重。是的,但这不是问题的根源。只是想帮你如果你知道的话,我从4天起就一直在寻找什么。非常感谢你的帮助。请接受我最大的尊重。是的,但这不是问题的根源。只是想帮你亲爱的先生,非常感谢您的提示,事实上,麻烦来自无限的诡计。我也会考虑你的指示,寻求帮助。循环没有结束至少有两个原因,这是因为被比较的两个值是通过串联不断变化的字符串,它们总是!==0另外,使用显式比较,如===和!==而不是==和=我将尽力纠正这一切,敬请尊敬的先生。亲切的问候,斯佩尔先生,非常感谢您的提示,事实上,麻烦来自无限的诡计。我也会考虑你的指示,寻求帮助。循环没有结束至少有两个原因,这是因为被比较的两个值是通过串联不断变化的字符串,它们总是!==0另外,使用显式比较,如===和!==而不是==和=我将尽力纠正这一切,敬请尊敬的先生。你好,SP