Добавлять по одному при каждом вызове функции --- строка + число

Каждый раз, когда я вызываю эту функцию. Я хочу, чтобы вывод увеличился на единицу. Проблема в том, что моя переменная представляет собой строку...

Лучшее объяснение (возможно)

  1. функция вызова
  2. оповещение говорит 1
  3. снова вызвать функцию
  4. оповещение говорит 2
  5. снова вызвать функцию
  6. оповещение говорит 3
  7. и так далее..

Как это получить так?!

вот мой код пока...

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
Другие вопросы по тегам