Добавлять по одному при каждом вызове функции --- строка + число
Каждый раз, когда я вызываю эту функцию. Я хочу, чтобы вывод увеличился на единицу. Проблема в том, что моя переменная представляет собой строку...
Лучшее объяснение (возможно)
- функция вызова
- оповещение говорит 1
- снова вызвать функцию
- оповещение говорит 2
- снова вызвать функцию
- оповещение говорит 3
- и так далее..
Как это получить так?!
вот мой код пока...
function addLink(){
if(localStorage.getItem('howManyLinks') <= 1){
localStorage.setItem('howManyLinks', localStorage.getItem('howManyLinks') + 1)
}
else{
localStorage.setItem('howManyLinks', '1');
}
alert(localStorage.getItem('howManyLinks'))
}
спасибо от меня!:D
2 ответа
Решение
Вам нужно преобразовать строку в число:
Number(localStorage.getItem('howManyLinks')) + 1
Вы также можете использовать одинарный +
оператор, чтобы заставить преобразование
+localStorage.getItem('howManyLinks') + 1
Лично мне не нравится его использовать, но многие люди предпочитают его.
Причина, по которой это необходимо, заключается в том, что +
на строку является конкатенация, так '1' + 1
вернусь '11'
,
Вам придется привести эту строку обратно к числу... есть множество способов сделать это ( http://jsperf.com/best-of-string-to-number-conversion/10) Я использую ">>0"
function addLink(){
if(localStorage.getItem('howManyLinks') <= 1){
localStorage.setItem('howManyLinks', (localStorage.getItem('howManyLinks')>>0) + 1)
}
else{
localStorage.setItem('howManyLinks', 1);
}
alert(localStorage.getItem('howManyLinks'))
}
addLink(); //alerts 1
addLink(); //alerts 2
addLink(); //alerts 3
addLink(); //alerts 4