Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何区分本地存储和单击存储每个文件?_Javascript_Jquery_Css_Html - Fatal编程技术网

Javascript 如何区分本地存储和单击存储每个文件?

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

我制作了一个简单的jQuery脚本,它在
本地存储中存储值
“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
    }
  })