sessionStorage 可以工作,但在控制台中返回“未定义”

问题描述 投票:0回答:2

我刚刚构建了一个 jquery 插件来处理一些数据存储。 当我尝试从存储中读取时,结果是读取的项目数据。

但是当我添加

sessionStorage.setItem('test','some data');

或删除

sessionStorage.removeItem('test');

一个项目,我总是在

undefined
 中得到 
console.log

我怎样才能摆脱未定义的?

我尝试的是

var result = sessionStorage.setItem('test','some data');

虽然这会将其打印到 var 但事实并非如此。

我的代码:

(function ($) {
    
    $.storage = {
    
        add: function(name,value){

            if(typeof value === 'object' )
            {   
                /** convert object to json **/
                value = JSON.stringify(value);
            }
            /** add to storage **/
            sessionStorage.setItem(name,value);
        },
        
        read: function(name){
        
            /** read from storage **/
            var item = sessionStorage.getItem(name);
                try {
                    item = $.parseJSON(item);
                }catch(e){}
            return item;
        },
        
        remove: function(name){
            /** delete from storage **/
            sessionStorage.removeItem(name);
        },
        
        clear: function(){
            /** clear storage **/
            sessionStorage.clear();
        }
        
    }
})(jQuery);
javascript jquery session-storage
2个回答
3
投票

setItem
removeItem
不返回任何值。因此你得到了
undefined
。另请注意
removeItem
只接受一个参数。

参考,这是上述方法的函数符号

setItem(键:字符串,数据:字符串):void

此公共方法通过指定的键存储数据。请注意,如果密钥已经存储,它将覆盖它。另一件需要考虑的事情是,如果我们存储一个密钥,并通过 sessionStorage.key(0) 我们获得该密钥,然后我们存储另一个密钥/数据,最后我们再次存储第一个密钥,sessionStorage.key(0) 将返回存储的第二个密钥/数据,而不是第一个。

删除项目(键:字符串):void

此公共方法只是从存储中删除密钥和相关数据。


3
投票
var result = sessionStorage.setItem('test','some data');

不返回任何东西。

sessionStorage.setItem('test','some data');

将值分配给

'test'
,因此右侧没有任何值。 你想要的是

sessionStorage.setItem('test','some data');
var result = sessionStorage.getItem('test'); //<- here the right hand side is 'some data'
© www.soinside.com 2019 - 2024. All rights reserved.