我遇到了我已经完成的脚本的问题,这个脚本应该分配给不同的字段。
实际上这里是脚本,我会在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编写的。
当你写出与校长相同的金额时就会遇到麻烦所以对于那种情况,如果你在黄色框输入上写下它会冻结屏幕3654.58我真的不明白为什么,实际上它不应该,因为如果我写3654.59所有的作品,如果我写得更多,它也有效。
问题出现在周期中,
你有
if(temp > 0)
和
else if(temp < 0)
但是如果
temp=0
这导致你的while循环永远工作...我包括temp = 0 case然后代码工作正常:http://jsfiddle.net/ywAU3/2/
传递给此函数的值是字符串,而不是数字
function itemSum(items){
var sum = 0;
for(var i=0; i < items.length; i++){
sum = items[i] + sum;
}
return sum;
}
'sum'的值变成了一个长串联的字符串,而不是数字。