创建一个计数函数,使用localStorage保存数据
creating a counting function that uses localStorage to save data
我在这里设置了函数来计算你点击按钮的次数。它将保存总与localStorage,当你返回…你猜对了……它给出了最后一个值。但现在我想创建很多这些,我不想复制和粘贴,浪费时间。我想创建一个函数,我可以通过参数传递一个值,它将为我创建一个localStorage。(参数中的值)将完成我的按钮计数。
<!DOCTYPE html>
<html>
<head>
<script>
function showNum()
{
document.getElementById("result").innerHTML=localStorage.click;
}
function clickCounter()
{
if(typeof(Storage)!=="undefined")
{
if (localStorage.click)
{
localStorage.click=Number(localStorage.click)+1;
}
else
{
localStorage.click=1;
}
document.getElementById("result").innerHTML="You have clicked the button " + localStorage.click + " time(s).";
}
else
{
document.getElementById("result").innerHTML="Sorry, your browser does not support web storage...";
}
}
function clickCounterNeg()
{
if(typeof(Storage)!=="undefined")
{
if (localStorage.click)
{
localStorage.click=Number(localStorage.click)-1;
}
else
{
localStorage.click=1;
}
document.getElementById("result").innerHTML="You have clicked the button " + localStorage.click + " time(s).";
}
else
{
document.getElementById("result").innerHTML="Sorry, your browser does not support web storage...";
}
}
</script>
</head>
<body onload="showNum()">
<p><button onclick="clickCounter()" type="button">Click me!</button></p>
<p><button onclick="clickCounterNeg()" type="button">Click me!</button></p>
<div id="result"></div>
<p>Click the button to see the counter increase.</p>
<p>Close the browser tab (or window), and try again, and the counter will continue to count (is not reset).</p>
</body>
</html>
本质上,我想说clickCounter("David")和/或clickCounterNeg("David"),它将创建与我上面相同的函数,但将数据存储到localStorage.David。我在stackoverflow论坛上搜索过,并读到你可以在函数中使用[David],但我已经厌倦了…你可以在这里看到。
<!DOCTYPE html>
<html>
<head>
<script>
function showNum(click)
{
document.getElementById("result").innerHTML=localStorage[click];
}
function clickCounter(click)
{
if(typeof(Storage)!=="undefined")
{
if (localStorage[click])
{
localStorage[click]=Number(localStorage[click])+1;
}
else
{
localStorage[click]=1;
}
document.getElementById("result").innerHTML="You have clicked the button " + localStorage[click] + " time(s).";
}
else
{
document.getElementById("result").innerHTML="Sorry, your browser does not support web storage...";
}
}
function clickCounterNeg()
{
if(typeof(Storage)!=="undefined")
{
if (localStorage.click)
{
localStorage.click=Number(localStorage.click)-1;
}
else
{
localStorage.click=1;
}
document.getElementById("result").innerHTML="You have clicked the button " + localStorage.click + " time(s).";
}
else
{
document.getElementById("result").innerHTML="Sorry, your browser does not support web storage...";
}
}
</script>
</head>
<body onload="showNum("p")">
<p><button onclick="clickCounter("p")" type="button">Click me!</button></p>
<p><button onclick="clickCounterNeg()" type="button">Click me!</button></p>
<div id="result"></div>
<p>Click the button to see the counter increase.</p>
<p>Close the browser tab (or window), and try again, and the counter will continue to count (is not reset).</p>
</body>
</html>
非常感谢你的帮助!
您的原始代码可以工作。你只需要对clickCounterNeg
做同样的事情(有一个语法错误在你的html - "clickCounter("p")"
应该是"clickCounter('p')"
)。这是您的代码的一个工作示例:http://jsfiddle.net/prankol57/rCv4k/
另外,如果要动态地将多个值保存到localStorage
,那么最好使用单个名称空间,例如localStorage.clicks
来保存数据。然后可以分别使用JSON.parse
和JSON.stringify
解析或存储信息。这样,您的名称就不会与其他名称冲突,并且更容易遍历值。
下面是一个在单一命名空间下的所有内容的工作示例(还有一些其他的小编辑):http://jsfiddle.net/prankol57/6wVK8/
相关文章:
- 模拟chrome.storage.local函数使用Jasmine
- 对其他函数使用匿名函数's参数
- 表单中的数据不会传递给提交函数-使用Angular
- Node.js设计:多个异步函数使用作为闭包传递的函数写入数据库
- 函数使用 jquery 还原
- 删除两个函数使用的全局变量
- 从多个文件中推送文本的函数(使用html5文件读取器上传)返回数组
- 回调函数/使用.addClass添加类后运行函数
- 如何在JavaScript中跨多个函数使用全局变量
- 从指令调用控制器函数(使用从指令传递的参数)
- 提取并调用在元素的 onclick HTML 属性中定义的 JavaScript 函数(使用 jQuery attr/p
- 如何实例化其构造函数使用 yield 的对象
- 通过匿名函数使用 setInterval 的更好方法
- 在 ajax 中使用 json 对象成功函数(使用 angular.js)
- 两个函数使用相同的变量,都不会覆盖其原始变量
- 未定义不是这个和自我的函数使用
- JavaScript函数 - 使用引号内的参数
- 对多个函数使用相同的参数
- 如何在 Javascript 中添加和调用来自构造函数的函数(使用 JQuery)
- JavaScript undefined不是一个函数(使用splice函数)