2017-01-13 5 views
0

У меня есть две кнопки и между ними есть форма. Одна кнопка говорит «+», а другая - «». Я пытаюсь сделать кнопки увеличения/уменьшения, но он не работает должным образом. Похоже, что добавление вызывает проблему, когда прирост не происходит, и вместо этого происходит конкатенация. Например, когда значение формы 0, и кнопка «+» нажата, она изменяет 0 до 01. Код Моего JavaScript имеетJavaScript/jQuery: Почему мой приращение не работает?

//assume the oldValue read 0 from the form 
newValue = oldValue + 1 
alert(newValue); //this returns 01 instead of 1 

Когда OldValue является 01 и увеличивают снова, он возвращает 011. Почему это не увеличивается, а конкатенация 1 в конце? Удивительно, декремент отлично работает с тем же кодом, за исключением того, что у меня есть минус, где есть плюс.

Как вы можете увеличить значение формы в покое? и может ли кто-нибудь объяснить, почему «+ 1» не работает?

+2

'+' также используется для объединения строк. Если вы «оповещаете» (typeof oldValue), он будет отображаться как строка, а не число. – PitaJ

+2

'oldValue' - это строка. Преобразуйте его в число. – Tushar

+0

СПАСИБО! Жаль, что я не понял, что данные, считанные из формы, являются строкой. Имеет смысл! Благодаря! –

ответ

1
newValue = Number(oldValue) + 1 

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

+0

Спасибо! и да, как прокомментировали другие 2, я забыл преобразовать строковое значение. Я полностью забыл, что данные, прочитанные из формы, были в строковой форме. –

1

Попробуйте это:

newValue = parseInt(oldValue) + 1; 

Это происходит потому, что OldValue тип данных строки и при добавлении Int в строку, то выход также строку. Поэтому вам нужно преобразовать его в число, прежде чем добавить в него некоторую ценность int.

+0

Спасибо! Оно работает! –

1

СЛУЧАЙ 1:

var a=1; 
var b=2; 

alert(a+b);// RESULT WILL BE 3 

СЛУЧАЙ 2:

var a='1'; 
var b=2; 

alert(a+b);// RESULT WILL BE 12 

Если вы получаете значения из формы или что-то, ваше значение будет рассматриваться как строка (например, «1»). Вы можете конвертировать, если номер/INT с помощью ключевого слова Number, как и ниже

alert(Number(a)+b); 
Смежные вопросы