2013-11-17 3 views
0

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

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

  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

ответ

0

Вам нужно преобразовать строку в число, то:

Number(localStorage.getItem('howManyLinks')) + 1 

Вы также можете использовать унарный оператор +, чтобы заставить конверсия

+localStorage.getItem('howManyLinks') + 1 

Мне лично это не нравится, но многие люди предпочитают это.

Причина, по которой это необходимо, потому что + на строке является конкатенацией, поэтому '1' + 1 вернет '11'.

+0

Может найти это полезным (js perf различных методов литья): http://jsperf.com/best-of-string-to -number-conversion/10 – Mikebert4

+2

Вам нужно будет сделать сотни тысяч звонков, чтобы это было отдаленно релевантно. Это микро-оптимизация, и если вы так много боретесь, что вам нужно это сделать, у вас обычно возникают проблемы. Что-то вроде 'Number()' делает код более читаемым, чем некоторый бит-сдвигающий «вуду», и читаемость важнее, чем микросекунда. –

+0

Спасибо большое! : D, но когда я назову его в третий раз, он снова вернется к 1. Я думаю, что что-то не так с этой строкой .. if (localStorage.getItem ('howManyLinks') <= 1) – Dwadelfri

-2

вам придется бросить эту строку обратно в число ... есть нагрузка способов сделать это (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 
+1

'localStorage' всегда хранит данные как строки ... –

+0

ahh .. редактирование для учета этого – Mikebert4

Смежные вопросы