如何检查HTML sessionStorage是否为空?

15

大家好,

我正在尝试找出检查HTML5中空的storageSession的最佳方法。

我注意到一些浏览器返回null,而有些则返回只是一个空格,如果您清除或未设置任何值到sessionStorage

我已经尝试了以下方法:

if (sessionStorage.getItem('value1') == "null" && sessionStorage.getItem('value2') == "null") {

但是它似乎不起作用。

有没有更好的方法来检查 sessionStorage 是否为空?

感谢您的帮助,提前致谢。

6个回答

19

应该可以正常工作;问题在于您将null用引号括起来了。

sessionStorage.length还可以为您提供存储值的数量。


嗨Herohtar,感谢您指出我的错误。非常感激。至于一些浏览器返回null而另一些返回空格的情况,我们应该创建两个条件语句吗?一个用于null,另一个用于空格? - John Citizen
如果你需要检查两者,那就是你必须要做的。只是出于好奇,哪个浏览器会返回空格?如果未设置值,则getItem()应始终返回null。此外,请参见我对另一种可能的测试的补充回答。 - Herohtar
嗨,Herohtar,如果你执行document.write(sessionStorage.getItem('value1'));,大多数浏览器会将其呈现为空值。然而,对于文本输入框来说情况就不同了。IE会在文本框中包含单词null作为值。 - John Citizen

6
但是这是如何检查“空”会话存储的方法。
   if (sessionStorage.length == 0) {

3
使用此代码检查会话存储中是否存在名为“name”的项:
if (sessionStorage['name']) {
    console.log("There is 'name' in session storage ")
}

使用 typeof sessionStorage['name'] === 'undefined' 对我很有效。 - moabi

1

你也可以尝试

    if($window.sessionStorage.value === undefined) {}

1
我检查了这种方式。
   $(document).ready(function () {
       if (window.sessionStorage) {
           if (sessionStorage.getItem("x-mas") === null) {
               if (getCountryCode() == 'de') {
                   $('#xmasModal').modal();
                   sessionStorage.setItem("x-mas", "1")
               }
           }
       }
   });

   function getCountryCode() {
       var url = window.location.pathname;
       var segments = url.split('/');
       var countrycode = segments[1];
       return countrycode;
   }

0
在这种情况下,我使用:

if (sessionStorage.getItem('value1').length == 0) {}


我认为你不能在null上使用.length。 - Si8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接