【问题标题】:jQuery: if condition is false, but still executed? [duplicate]jQuery:如果条件为假,但仍执行? [复制]
【发布时间】:2019-02-11 21:43:23
【问题描述】:

以下代码

  $(document).ready(function(){

    sessionStorage.test = false;  

    alert( sessionStorage.test );

    if ( sessionStorage.test ) {
      alert("I dont care about your conditions!");
    }

  });

产生以下弹出窗口:

我不在乎你的条件!

即使 sessionStorage.test 明确设置为 false。为什么会这样?根据这个答案https://stackoverflow.com/a/17986241/2311074,这应该有效。我究竟做错了什么?我正在使用 XAMPP - sessionStorage 可能有问题吗?这是我的测试文件的完整代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Test</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script >
      $(document).ready(function(){
        sessionStorage.test = false;    
        if ( sessionStorage.test ) {
          alert("I dont care about your conditions!");
        }
      });
    </script>
  </head>
  <body>
    <!-- page content -->
  </body>
</html>

【问题讨论】:

  • “它返回”是什么意思?带有 alert() 函数调用的 Javascript 代码不会“返回”任何内容。
  • 嗯,我在控制台上看看可能有错误,sessionStorage 也是浏览器的本地存储。我不确定你可以设置一个像这样的额外变量
  • @arkascha 你说得对,措辞不好。我改变它。我的意思是我有 2 个弹出窗口。
  • Storage API 只存储字符串,非空字符串为真
  • @Andreas 所以从我的链接问题中接受的答案是错误的,有 10 票并且没有人检查?

标签: jquery session-storage


【解决方案1】:

sessionStorage 的默认 getter/setter 是:

sessionStorage.setItem('keyName', 'value');    
sessionStorage.getItem('keyName')

所以,例如:

sessionStorage.setItem('test',false);    
if (sessionStorage.getItem('test') != "false") {
   ..........
}

重复的主题:
- sessionStorage setItem returns true or false
- sessionStorage isn't working as expected

【讨论】:

  • 好的.. 所以我必须做类似if( sessionStorage.getItem('test') == "false") 的事情?谢谢!计时器到期后,我会立即接受答复。
  • 我已经更新了答案,是的,你应该... != "false"
猜你喜欢
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
相关资源
最近更新 更多