1

我有一个数组,第一个元素的值为 1。

每次用户单击一个按钮时,我希望它增加 1。我写了这个,但它使数组元素从 1 变为 11,再到 111 ......等等。我怎样才能让它增加 1。像 1、2、3 ......

function addCake (){
    quantityArray[0] += 1;
    var cost= quantityArray[0] * 1.49;
    document.getElementById("cart").innerHTML += "<tr id="+"cakeTotal"+"><td>"+quantityArray[0]+"</td>Cake Donut</td><td>"+"$"+cost+"</td>";
}
4

8 回答 8

3

更改您的代码如下:

function addCake (){
    quantityArray[0]=parseInt(quantityArray[0]) + 1;
    var cost= parseInt(quantityArray[0]) * 1.49;
    document.getElementById("cart").innerHTML += "<tr id="+"cakeTotal"+"><td>"+quantityArray[0]+"</td>Cake Donut</td><td>"+"$"+cost+"</td>";
}
于 2013-08-19T05:30:36.100 回答
2

尝试将其转换为 int

quantityArray[0] = parseInt(quantityArray[0]);
quantityArray[0] += 1;

我看到的问题是您将数组项初始化为"".

为什么?如果设置为0,则可以避免该问题:http: //jsfiddle.net/rgvaT/2/

quantityArray[0]=0;
于 2013-08-19T05:28:59.117 回答
2

你可以试试:

quantityArray[0]++;

这也会给你的计数器加 1。

于 2013-08-19T05:31:58.767 回答
2

无需调用 parseInt 等。只需quantityArray正确初始化您的数组:

var quantityArray = [];
quantityArray[0] = 0;

function addCake (){
    quantityArray[0]++;
    var cost = quantityArray[0] * 1.49;
    document.getElementById("cart").innerHTML += "<tr id="+"cakeTotal"+"><td>"+quantityArray[0]+"</td>Cake Donut</td><td>"+"$"+cost+"</td>";
}
于 2013-08-19T05:39:54.333 回答
1

尝试这个

quantityArray[0]=parseInt(quantityArray[0]) + 1;
于 2013-08-19T05:32:46.963 回答
0
var test = new Array();
    test[0] = 1;
    test[0] += 1;
    test[0] += 1;
alert(test[0]); // output is 3. Its working fine.

您正在做的是将“字符串” 1 与数组的先前值连接起来。

为避免将值转换为 int,请使用 parseInt()。像这样的东西。

function addCake (){
    quantityArray[0] += parseInt(1, 10); // To decimal. It is very important
    var cost= quantityArray[0] * 1.49;
    document.getElementById("cart").innerHTML += "<tr id="+"cakeTotal"+"><td>"+quantityArray[0]+"</td>Cake Donut</td><td>"+"$"+cost+"</td>";
}
于 2013-08-19T05:36:03.487 回答
0

我猜你已经将数组元素初始化为字符串。使用下面的代码来增加元素。

quantityArray[0] = parseInt(quantityArray[0]) + 1;
于 2013-08-19T05:37:48.430 回答
0

这里的问题是他们的数据类型

JavaScript中,当您声明一个变量时,var x; 它将变量存储为 var 类型的对象。这就是导致问题的原因。

您需要将对象 ( var ) 转换为整数才能通过类型转换进行数学运算。您可以使用 (Number) 函数进行类型转换。在其他情况下,它认为+作为附加运算符和变量作为字符串执行附加功能。

代码将如下所示。

function addCake (){
    quantityArray[0] =(Number)quantityArray[0]+1;
    var cost= quantityArray[0] * 1.49;
    document.getElementById("cart").innerHTML += "<tr id="+"cakeTotal"+"><td>"+quantityArray[0]+"</td>Cake Donut</td><td>"+"$"+cost+"</td>";
}
于 2013-08-19T05:56:27.023 回答