问题描述
我有一个包含25个插槽的数组,每个插槽都单击相应的按钮填满。 我在总结数组的值时遇到问题。 我努力了
for(var k = 0; k < price.length; k++)
{
totalPrice += price[k] << 0;
}
但这似乎只是将价格附加到先前输出的末尾,而不是相加。
我当前的代码是这样的:
$("#sumArray").click(function()
{
a++;
price[0] = 8.45 * a;
alert(price[0]);
for(var k = 0; k < price.length; k++)
{
totalPrice += price[k] << 0;
}
alert(totalPrice);
for(var i = 0; i < 27; i++)
{
$("#priceHere"+i+"").append("<b>"+totalPrice+"</b>");
}
//$.mobile.changePage("#mainMenu1");
});
其他所有数组索引都填充在其他click函数中。
编辑:删除了与问题无关的所有代码,以便于阅读。 价格数组索引可以根据单击某个按钮的次数而改变。
1楼
对于现代浏览器(IE 9+及其他)
total = price.reduce(function (prev,curr) {
return prev + curr;
}, 0);
参考: :
2楼
在计算之前添加以下内容:
totalPrice = 0;
如果不重置该值,它将继续添加到先前的输出中。
由于问题一直在编辑:
$("#priceHere"+i+"").append("<b>"+totalPrice+"</b>");
确实,它说了什么。 它将总价格附加到元素。 如果要完全覆盖该值,可以执行以下操作:
$("#priceHere"+i+"").html("<b>"+totalPrice+"</b>");
3楼
根据您的问题,您只需要这个
price = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5]
totalPrice = 0
for(var k = 0; k < price.length; k++) {totalPrice += price[k];}
// gives 105
但这似乎只是将价格附加到先前输出的末尾,而不是相加。
使其为零:
totalPrice = 0
4楼
您在哪里申报price
和totalPrice
?
这是一个求和一个数组值的例子:
var price = [1, 2, 3, 4, 5], // example array of prices
totalPrice = 0, // initialize to 0 so totalPrice is a number
k; // counter that you'll use in the loop
for (k = 0; k < price.length; k++) {
totalPrice += price[k];
}
console.log(totalPrice); // 15
请注意,JavaScript使用+
运算符进行加法和字符串连接。
听起来好像发生了将totalPrice
设置为字符串(或为一个)的情况,因此,当您要添加数字时,实际上是在连接一个字符串。
这是一个看起来像的例子。 请注意,所有代码都是相同的,除了将字符串(而不是数字)分配给totalPrice之外:
var price = [1, 2, 3, 4, 5], // example array of prices
totalPrice = '0', // initialized as the string '0'
k; // counter that you'll use in the loop
for (k = 0; k < price.length; k++) {
totalPrice += price[k];
}
console.log(totalPrice); // '012345'