jquery sessionStorage工作正常,但在控制台中返回“undefined”

rsl1atfo  于 2023-11-17  发布在  jQuery
关注(0)|答案(2)|浏览(173)

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

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

字符串
或删除

sessionStorage.removeItem('test');


我总是在console.log中得到undefined
如何才能摆脱undefined?
我尝试的是

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);

cczfrluj

cczfrluj1#

setItemremoveItem不返回任何值。因此您将得到undefined。还要注意removeItem只接受一个参数。
Reference,这里是上述方法的函数符号

setItem(key:string,data:string):void

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

removeItem(key:string):void

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

pobjuy32

pobjuy322#

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'

相关问题