- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试找出一种更好的方法来完成我下面的代码所做的事情..它所做的是在 localstorage 中保存一个时间戳,以了解最后一次单击该链接的时间,然后在时间用完时出现。但是如果我想添加更多链接,将会有很多复制粘贴......有人可以帮助我如何循环执行“保存和加载”脚本吗?也许在链接中而不是在脚本中添加要计算的分钟数?
我现在是这样做的:
<html>
<head>
<script type="text/javascript" src="script.js"></script>
</head>
<body onload="checkLocalStorage()">
<a onclick="saveTime01()" id="linkID01" href="#">Link1</a>
<a onclick="saveTime02()" id="linkID02" href="#">Link2</a>
<a onclick="saveTime03()" id="linkID03" href="#">Link3</a>
<a onclick="saveTime04()" id="linkID04" href="#">Link4</a>
</body>
</html>
在我的 script.js 中
function checkLocalStorage() {
setInterval(function(){
if("linkValue01" in localStorage){
var storedTime = localStorage.getItem("linkValue01");
var timeNow = new Date().getTime();
var minutesFromLastClick = (timeNow - storedTime)/60000;
if(minutesFromLastClick > 30) {
document.getElementById("linkID01").style.display = "inline";
}
else {
document.getElementById("linkID01").style.display = "none";
}
}
if("linkValue02" in localStorage){
var storedTime = localStorage.getItem("linkValue02");
var timeNow = new Date().getTime();
var minutesFromLastClick = (timeNow - storedTime)/60000;
if(minutesFromLastClick > 180) {
document.getElementById("linkID02").style.display = "inline";
}
else {
document.getElementById("linkID02").style.display = "none";
}
}
if("linkValue03" in localStorage){
var storedTime = localStorage.getItem("linkValue03");
var timeNow = new Date().getTime();
var minutesFromLastClick = (timeNow - storedTime)/60000;
if(minutesFromLastClick > 120) {
document.getElementById("linkID03").style.display = "inline";
}
else {
document.getElementById("linkID03").style.display = "none";
}
}
if("linkValue04" in localStorage){
var storedTime = localStorage.getItem("linkValue04");
var timeNow = new Date().getTime();
var minutesFromLastClick = (timeNow - storedTime)/60000;
if(minutesFromLastClick > 10) {
document.getElementById("linkID04").style.display = "inline";
}
else {
document.getElementById("linkID04").style.display = "none";
}
}
}, 1000);
}
function saveTime01(){
var object = new Date().getTime();
localStorage.setItem("linkValue01", JSON.stringify(object));
document.getElementById("linkID01").style.display = "none";
}
function saveTime02(){
var object = new Date().getTime();
localStorage.setItem("linkValue02", JSON.stringify(object));
document.getElementById("linkID02").style.display = "none";
}
function saveTime03(){
var object = new Date().getTime();
localStorage.setItem("linkValue03", JSON.stringify(object));
document.getElementById("linkID03").style.display = "none";
}
function saveTime04(){
var object = new Date().getTime();
localStorage.setItem("linkValue04", JSON.stringify(object));
document.getElementById("linkID04").style.display = "none";
}
最佳答案
我想你可以这样做 -
<a class="tracker" id="linkValue1" data-id="1" href="#">Link1</a>
<a class="tracker" id="linkValue2" data-id="2" href="#">Link2</a>
<a class="tracker" id="linkValue3" data-id="3" href="#">Link3</a>
<a class="tracker" id="linkValue4" data-id="4" href="#">Link4</a>
现在在 Javascript 中 -
$(".tracker").on("click",handleClick);
function handleClick(){
var ele = $(this),
object = new Date().getTime(),
id = ele.data("id");
localStorage.setItem("linkValue"+id, JSON.stringify(object));
document.getElementById("linkID"+id).style.display = "none";
}
function checkLocalStorage() {
var numLinks = $(".tracker").length;
setInterval(function(){
for(var i = 0; i< numLinks.length;++i){
var item = "linkValue"+numLinks[i],
eleID = "linkID"+numLinks[i];
if(item in localStorage){
var storedTime = localStorage.getItem(item);
var timeNow = new Date().getTime();
var minutesFromLastClick = (timeNow - storedTime)/60000;
if(minutesFromLastClick > 30) {
document.getElementById(eleID).style.display = "inline";
}
else {
document.getElementById(eleID).style.display = "none";
}
}
}
}
}
关于javascript - 有没有更好的方法来设置和从 LocalStorage 获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283115/
我是 Angular 新手。使用 $localstorage(ngStorage) 是否有任何特定的原因而不是常规的 javascript localstorage 有什么区别。 谁能给我解释一下吗?
这个问题说明了一切。我意识到所有选项都可以在最新的浏览器中使用,但是语义上最好的选择是什么?为什么? 最佳答案 根据 W3C 标准,正确的是 window.localStorage,因为 localS
我想不出一个好的标题,所以希望可以。 我正在做的是创建一个离线 HTML5 webapp。 “出于某些原因”我不希望将某些文件放在缓存 list 中,而是希望将内容放在 localStorage 中。
我最近问了a question about LocalStorage .使用 JSON.parse(localStorage.item) 和 JSON.parse(localStorage['item
我最近问了a question about LocalStorage .使用 JSON.parse(localStorage.item) 和 JSON.parse(localStorage['item
我最近问过a question about LocalStorage 。使用 JSON.parse(localStorage.item) 和 JSON.parse(localStorage['item
我在将本地存储的定价添加到其他字段时遇到问题。如果我将 beforeNoonNPSlot 的价格设置为 2,但我将 matineeNPSlot 的字段留空(它应该保留分配给的任何价格)最后)。然后在我
我需要从 localStorage 对象变量中删除对象键而不从 localStorage 中删除键 let obj = localStorage; let keys = Object.keys(loc
根据我所读到的内容,我希望以下代码能够工作。 此代码是函数的一部分,该函数应该通过用下一个更高的 localStorage 变量覆盖它来删除 localStorage 变量。一旦没有更多内容可供复制,
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: JavaScript property access: dot notation vs. brackets? 我是
编写localStorage['key'] = value或localStorage.setItem('key', value)有区别吗? 我看到了this question标记为重复,但在开发人员工
我一直在做以下事情: var store = window.localStorage; store.setItem() 但现在我看到代码是这样做的: localStorage.setItem() 两者
我在 Chrome 上遇到此错误。不知道为什么会发生。任何帮助!我正在使用 Backbone.localStorage 插件和 Backbone。我在以下行中收到错误: localStorage: B
如果我尝试以下代码: var c = new Backbone.Collection(); c.localStorage = new Backbone.LocalStorage("items");
我想使用 localStorage 存储用户输入值,然后在倒计时器中使用该值。 这是用户输入数据的 HTML: Work Time
我有一个适用于 Mac 和 Linux 用户但不适用于 Windows 用户的 Chrome 扩展程序。当我进入控制台并在 localStorage 中设置一个项目时,它工作正常,但是当用户尝试使用扩
在这里浏览所有问题/答案,但找不到解决我的问题的方法。条件('localStorage' in window)返回 true但是 localStorage 的对象本身仍然是 undefined . 设
使用下面的代码,我创建一个 localstorage 变量,如果未定义,则其键为 quote = 1。然而,当最终使用相同的引号键再次调用它时,即使使用了 Number() 函数,它也会变成 11 而
我上次检查时,以下两行返回 true: null == localStorage["foo"]; null == localStorage.getItem("foo"); 将 null 替换为 und
我正在尝试在 NextJS 静态站点上使用 localStorage,但遇到 localStorage 未定义错误。 我的错误显示组件的代码是: export default function Cat
我是一名优秀的程序员,十分优秀!