【问题标题】:How to save a number into localStorage that increments each time the user enters a new number?如何将一个数字保存到 localStorage 中,每次用户输入一个新数字时都会增加?
【发布时间】:2013-06-30 08:18:39
【问题描述】:

我无法解决这个问题。我制作了一个小型 Javascript 程序,用户在其中输入一个数字并显示一个百分比。它还显示输入数字的总和。我试图在每次用户查看页面时显示该总数。我想使用 localStorage 保存数字并在每次用户访问页面时将其显示在屏幕上。

http://jsfiddle.net/uyr7Z/

这里是 jsfiddle 演示。问题是我无法弄清楚如何增加保存的数字。我希望每次单击计算按钮时都添加分钟。

到目前为止,这是我的代码:

var decent = 1200;
var master = 600000;
var minutes;
var decentOriginal;
var masterOriginal;
var totalDecent=0;
var totalMaster=0;
var decentLeft= 1200;
var masterLeft= 600000;
var totalMin = 0;

function compute() {
    minutes = document.getElementById('userInput').value;
    decentOriginal = minutes/decent * 100;
    masterOriginal = minutes/master * 100;
    updatePercent();
    localStorage.time = localStorage.num + minutes;
    document.getElementById('storage').innerHTML = localStorage.time + " minutes";
}

function updatePercent() {
var decentPercent = document.getElementById('decent-percent');
var masterPercent = document.getElementById('master-percent');
var decentCompute = Math.round(decentOriginal*100)/100;
var masterCompute = Math.round(masterOriginal*100)/100;
decentLeft = decentLeft - minutes;
masterLeft = masterLeft - minutes;  
    totalDecent = totalDecent + decentCompute;
    totalMaster = totalMaster + masterCompute;
    totalMin = Math.round(totalMin + parseInt(minutes)/60);
    if(decentLeft<=0) {
        totalDecent = 100;
        decentLeft = 0;
        decentCompute = 0;  
    } 
    if(masterLeft<=0) {
        totalMaster = 100;
        masterLeft = 0;
        masterCompute = 0;
    }
    if(totalMin>=600000) {
        totalMin=600000;
    }


    decentPercent.innerHTML = totalDecent.toFixed(1) + "%" + " " + decentLeft + " minute(s) to go.";
    masterPercent.innerHTML = totalMaster.toFixed(2) + "%"  " " + masterLeft + " minute(s) to go.";
    document.getElementById('total-min').innerHTML = totalMin+" hours spent.";
}

【问题讨论】:

  • 您对此有何疑问?它做错了什么,Javascript控制台中是否有任何错误?你能用小提琴演示一下吗?
  • 什么是localStorage.num?不应该是localStorage.time吗?

标签: javascript local-storage savestate


【解决方案1】:

您在多个地方假设变量是一个数字,而实际上它是一个字符串。

使用 parseInt 将 value 用作数字。

这里:

minutes = parseInt(document.getElementById('userInput').value) || 0;

这里:

localStorage["time"] = (parseInt(localStorage["time"]) || 0) + minutes;
document.getElementById('storage').innerHTML = localStorage["time"] + " minutes";

这里是 updated fiddle 的更改。

请注意,parseInt 之后的 || 部分适用于解析返回 NaN

的情况

【讨论】:

  • 非常感谢。这个问题快把我逼疯了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 2018-02-16
  • 2013-01-07
  • 2015-07-25
  • 1970-01-01
  • 2011-09-17
相关资源
最近更新 更多