Javascript 如何区分本地存储和单击存储每个文件?
我制作了一个简单的jQuery脚本,它在Javascript 如何区分本地存储和单击存储每个文件?,javascript,jquery,css,html,Javascript,Jquery,Css,Html,我制作了一个简单的jQuery脚本,它在本地存储中存储值“voted1”,“voted2”,“voted3”。问题是单击时它会同时存储所有值,每次单击时我都需要它,因为以后应该调用它(例如,如果“value3”存在,则开始jQuery逻辑…) 经过几周的测试,我想不出来 HTML: jQuery: $(document).ready(function() { var voteLink = $('.gallery-item a'); var votedYes = $('.exist
本地存储中存储值“voted1”
,“voted2”
,“voted3”
。问题是单击时它会同时存储所有值,每次单击时我都需要它,因为以后应该调用它(例如,如果“value3”
存在,则开始jQuery逻辑…)
经过几周的测试,我想不出来
HTML:
jQuery:
$(document).ready(function() {
var voteLink = $('.gallery-item a');
var votedYes = $('.exists');
voteLink.one('click', function() {
// localStorage.setItem('voted1', 'yes1');
$(this).text('Thank you!');
$(this).addClass('voted');
})
voteLink.one('click', function() {
// localStorage.setItem('voted2', 'yes2');
$(this).text('Thank you!');
$(this).addClass('voted');
})
voteLink.one('click', function() {
localStorage.setItem('voted3', 'yes3');
$(this).text('Thank you!');
$(this).addClass('voted');
if($('.voted').length === 3){
voteLink.fadeOut('slow');
$('.exists').fadeIn(1800);
}
if (localStorage.getItem("voted3")) {
voteLink.remove();
votedYes.fadeIn(1800);
}
});
正如我所说,在第一次单击时,它会将所有值放在localStorage中,我需要将其分开
谢谢大家。警告:这个答案可能完全错了,因为您的问题没有包含用例的所有细节。然而
下面的代码假定
- 本地存储中最多应记录3张选票
- 要进行投票,必须先记录投票
n+1
李>
根据localStorage中的内容注册处理程序:
if (
localStorage.getItem("voted1")
&& !localStorage.getItem("voted2")
) {
voteLink.one('click', function() {
localStorage.setItem('voted2', 'yes2');
//...
});
}
。。。或者测试事件处理程序中的localStorage内容:
fn_vote2 = function() {
if (
localStorage.getItem("voted1")
&& !localStorage.getItem("voted2")
) {
localStorage.setItem('voted2', 'yes2');
//...
voteLink.off('click', fn_vote2);
}
};
voteLink.on('click', fn_vote2);
对vote1
,vote3
的概括应该很容易。请注意,后一种解决方案意味着您不仅为单个事件注册处理程序。而是在成功后取消注册
该方法的优点是可以选择级联投票,而无需重新加载页面
顺便说一句,由于本地存储在会话中持续存在,建议不要使用像投票
$(document).ready(function()这样的通用键{
var voteLink=$(“.gallery项目a”);
var votedYes=$(“.exists”);
if(localStorage.getItem(“计数”)==null){
setItem(“计数”,1)
}
如果(!(localStorage.getItem(“voted3”)=“yes3”)){
var i=编号(localStorage.getItem(“计数”),
fn=功能(e){
如果(i<3){
setItem(“投票”+i,“是”+i);
$(此).text(“谢谢!投票”+i)
.addClass(“投票”+i);
setItem(“计数”,1+i);
i=编号(localStorage.getItem(“计数”);
}否则{
setItem(“投票”+i,“是”+i);
$(此).text(“谢谢!投票”+i)
.addClass(“已投票”+i)
.淡出(“缓慢”);
if(localStorage.getItem(“voted3”)==“yes3”){
voteLink.remove();
votedYes.fadeIn(1800年);
}
}
};
voteLink.on(“点击”,fn);
}否则{
//如果`localStorage`具有属性`voted3`,且值等于`yes3`,
//做事
}
})
是否要求在不同的localStorage
属性中分别存储每个投票,或在单个localStorage
属性中覆盖每个投票?每个投票都应根据单击情况单独存储,不覆盖。哇。。哇。你太棒了。你做到了!如果当用户投票并重新加载页面时,被投票的元素仍然保留在class.voted中,那该有什么好处呢。如果我能帮你什么忙,请告诉我。有什么地方我可以留下你的评论吗?你已经处理这件事4个多小时了。。。非常感谢。
if (
localStorage.getItem("voted1")
&& !localStorage.getItem("voted2")
) {
voteLink.one('click', function() {
localStorage.setItem('voted2', 'yes2');
//...
});
}
fn_vote2 = function() {
if (
localStorage.getItem("voted1")
&& !localStorage.getItem("voted2")
) {
localStorage.setItem('voted2', 'yes2');
//...
voteLink.off('click', fn_vote2);
}
};
voteLink.on('click', fn_vote2);
$(document).ready(function() {
var voteLink = $(".gallery-item a");
var votedYes = $(".exists");
if (localStorage.getItem("count") === null) {
localStorage.setItem("count", 1)
}
if (!(localStorage.getItem("voted3") === "yes3")) {
var i = Number(localStorage.getItem("count")),
fn = function(e) {
if (i < 3) {
localStorage.setItem("voted" + i, "yes" + i);
$(this).text("Thank you! for vote " + i)
.addClass("voted" + i);
localStorage.setItem("count", 1 + i);
i = Number(localStorage.getItem("count"));
} else {
localStorage.setItem("voted" + i, "yes" + i);
$(this).text("Thank you! for vote " + i)
.addClass("voted" + i)
.fadeOut("slow");
if (localStorage.getItem("voted3") === "yes3") {
voteLink.remove();
votedYes.fadeIn(1800);
}
}
};
voteLink.on("click", fn);
} else {
// if `localStorage` has property `"voted3"` and value equals `"yes3"`,
// do stuff
}
})