2013-08-19 2 views
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>"; 
} 
+0

Как и когда вы инициализируете этот массив? – Itay

ответ

2

Try, чтобы преобразовать его в целое

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

Проблема, которую я вижу, что вы инициализируют элементы массива как "".

Почему? если вы установите в качестве 0, вы можете избежать этой проблемы: http://jsfiddle.net/rgvaT/2/

quantityArray[0]=0; 
+2

Я думаю, вам нужно отредактировать его в 'parseInt (quantityArray [0])', потому что по умолчанию это int. –

+0

@DipeshParmar XD какая ошибка! Спасибо! –

+0

это, вероятно, сработает, но оно начинается с 0, так что это дает мне NaN – Ktown

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>"; 
} 
1

Вы можете попробовать:

quantityArray[0]++; 

Это будет также добавить 1 к ваш счетчик.

1

Попробуйте

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

Требует ли '1' parseInt? – anubhava

+0

Да, по умолчанию рассмотрим 1 как строку. –

+1

Вам нужно кое-что прочитать, я верю. – anubhava

0
var test = new Array(); 
    test[0] = 1; 
    test[0] += 1; 
    test[0] += 1; 
alert(test[0]); // output is 3. Its working fine. 

Что вы делаете конкатенации "String" 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>"; 
} 
0

Я думаю, вы инициализировали элемент массива как строку. используйте код, чтобы увеличить элемент.

quantityArray[0] = parseInt(quantityArray[0]) + 1; 
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>"; 
} 
+1

@ktown: Не инициализируйте элемент массива следующим образом: 'количествоArray [0] =" ";'. Как я уже сказал выше, сделайте его 'quantityArray [0] = 0;' – anubhava

0

Здесь проблема с типом данных Они

В JavaScript, когда вы объявляете variable by var x; Сохраняет переменную как объект типа var.Это является причиной проблемы.

Вам необходимо преобразовать объект (var) в целое число, чтобы сделать математических операций по типу литья. Вы можете использовать тип (Number). В других случаях он рассматривает + как append оператор и переменные как Строка do append function.

Код будет выглядеть следующим образом.

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>"; 
}