2016-12-06 32 views
1

所以最近我一直有問題與JS本地存儲。每次我按下按鈕,而不是加1到var wood;,輸出會在每次按下按鈕時在輸出的左側添加1,所以如果我按下按鈕3次而不是木= 3,它將等於111 。請幫忙。localStorage和變量

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 
<p id="output"></p> 
 
<button onclick="collectWood()">collect wood</button> 
 
<script> 
 
var wood = +localStorage.getItem("woodSave"); 
 

 
document.getElementById('output').innerHTML = parseInt(wood); 
 
localStorage.setItem("woodSave", wood); 
 
if(wood >= 1000){ 
 
\t replace = (wood/1000).toFixed(2) + "k"; 
 
\t wood = replace; 
 
\t document.getElementById('output').innerHTML = wood; 
 
} 
 
function collectWood() { 
 
\t wood = wood + 1; 
 
\t document.getElementById('output').innerHTML = wood; 
 
} 
 
</script> 
 
</body> 
 
</html>

+0

字符串,不是數字 – epascarello

+0

@epascarello問題不是你提到的問題的重複。問題是價值錯位。 –

回答

0

你的問題就在這裏:

replace = (wood/1000).toFixed(2) + "k"; 
wood = replace; 

這裏發生的事情是,當wood(數字)大於或等於1000,你做一些數學上數字並返回一個字符串,然後取出該字符串並將其重新分配給您的變量,所以前進,這就是存儲和使用的內容。你應該把這個replace變量的結果注入到DOM中,這樣用戶就可以看到格式化的輸出,但內部值保持一個數字。

此外,您第一次運行代碼時,將不會存儲任何值,因此您需要準備初始化它。

最後,您需要將輸出代碼移動到按鈕單擊中。

請登錄see this Fiddle以獲得帶評論的工作版本。

+0

你知道'localStorage'之前''做了什麼嗎? – lonesomeday

+0

@LiamSperry查看我更新的答案和小提琴。 –

+0

@lonesomeday我一開始並沒有看到'+'。我已經更新了我的答案。 –