2014-01-08 1 views
0

Im пытается сохранить клики пользователя в localStorage, а затем, когда пользователь вернется и щелкнет localStorage, будут добавлены новые клики.update/добавить localStorage с переменной

Это то, что у меня есть:

var storedClicks = localStorage.getItem("clicks"); 

    function count_clicks() 
{ 
    var count = parseInt(document.cnt_click.cnt_clicks.value); 
    count++; 
    document.cnt_click.cnt_clicks.value = count; 
    localStorage.setItem("clicks", storedClicks + count); 
     if(count == 10) { 
      alert(document.cnt_click.cnt_clicks.value); 
     } 
     $('#printHere').html(storedClicks); 

} 

Но все это делает просто добавление номера в конце, так что позволяет сказать, что это пользователя История нажмите:

Визит 1: 2 щелчки Посещение 2: 6 кликов Посещение 3: 3 клика

Выход будет 263 клика, а не 11 кликов. Что мне нужно изменить/сделать, и по какой-то причине он не будет печатать клики.

Заранее благодарен!

+0

Это должно сделать это: 'localStorage.setItem (" clicks ", + storedClicks + count);' или 'var storedClicks = + localStorage.getItem (" clicks ");' –

ответ

1

Заменить

var storedClicks = localStorage.getItem("clicks"); 
localStorage.setItem("clicks", storedClicks + count); 

с

var storedClicks = parseInt(localStorage.getItem("clicks")); 
var newCount = storedClicks + count; 
localStorage.setItem("clicks", newCount); 

Вы были добавления Int в строку. Надеюсь, это поможет.

+0

Спасибо за ваш ответ. Это имеет смысл Теперь. Не думал об этом, и я не видел проблемы, пока вы не указали на это. :-) –

+0

Добро пожаловать :) Счастливое кодирование @MariusDjerv –

0
var storedClicks = parseInt(localStorage.getItem("clicks")); 

Вы добавили строку в целое:

"12" + 3 = "123" // строка

+0

Спасибо, но Mystic Magic была раньше вас, поэтому @Mystic Magic получила правильный ответ –

0

Как уже упоминалось вы сцепленные строки вместо добавления номера. Это распространенная ошибка, допущенная пользователями, новыми для javascript.

Также см. Javascript (+) sign concatenates instead of giving sum of variables для дальнейшего ознакомления.

Пожалуйста, смотрите мой пример:

storedClicks++; // this will cast the string to a number 

http://jsfiddle.net/LdjE6/6/

Я надеюсь, что это делает его немного более ясно.

+0

Спасибо за демо! :) –

0
<input type="button" onclick="count_clicks()" /> 
<div id="sc"></div> 

<script> 
function count_clicks() 
{ 
    var storedClicks = (localStorage.getItem("clicks") == "undefined" || localStorage.getItem("clicks") == null) ? 0 : parseInt(localStorage.getItem("clicks")); 
    localStorage.setItem("clicks", storedClicks + 1); 
    $('#sc').html(parseInt(localStorage.getItem("clicks"))); 

}  
</script> 

Выше проверен код.

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