【问题标题】:Local storage if then statement not recognizing value本地存储 if then 语句不识别值
【发布时间】:2015-09-13 21:29:32
【问题描述】:

我正在使用 HTML5 本地存储来存储一个值,“单击”并且仅在该值设置为“false”时显示一个弹出窗口,在弹出窗口上单击“确定”会将值更改为“true”并且然后不再触发弹出窗口。 我一直在对此进行测试,代码看起来不错,没有错误,但每次点击时仍会显示弹出窗口。

jQuery( document ).ready(function() {

   localStorage.setItem('clicked',"false");
   var clicked = localStorage.getItem('clicked');
   if(clicked = "false") {

     jQuery('.external').click( function(e) {

       var r = confirm("You are now leaving");
       if (r == true) {
         localStorage.setItem('clicked',"true");
         window.open(jQuery(this).prop('href'),"_blank");

       } else {

       }

       e.preventDefault();

    });
  }
  else {
  }
}

【问题讨论】:

  • 您缺少一个等号,它应该是if (clicked == "false")。另外,confirm("You are now leaving") 会返回什么?只要有一个值,它将等于true

标签: jquery if-statement local-storage


【解决方案1】:
jQuery( document ).ready(function() {

  localStorage.setItem('clicked',"false");
  var clicked = localStorage.getItem('clicked');

    jQuery('.external').click( function(e) {
      e.preventDefault();
      var clicked = localStorage.getItem('clicked')


      if (clicked === "true") {
          return;
      }

      var r = confirm("You are now leaving");
      if (r == true) {
        localStorage.setItem('clicked',"true");
        window.open(jQuery(this).prop('href'),"_blank");
      } else {

      }

    });

});

【讨论】:

  • 即便如此,它会在页面加载时设置为false。然后将始终设置处理程序。处理程序永远不会unset,并且处理程序in 不会检查存储的值。
  • @jonathan 无论 localStorage 值如何,它仍然显示弹出窗口(我可以验证 devtools 中的值更改)
  • 更新了代码,现在if检查在click事件里面,我们检查它是否被设置为点击,如果是我们停止函数,否则我们有弹出显示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多