HTML5本地存储和测试值不为空

时间:2014-07-16 12:55:13

标签: jquery html5 local-storage

我将购物车详细信息存储在HTML5本地存储中,如下所示:

Cart_items{"SCI-1":{"quantity":1,"id":"SCI-1","price":23.52,"name":" product 1","pid":"5"}}

我正在测试一个条件,如果本地存储中没有项目,则下拉菜单设置为禁用,如下所示:

<script type='text/javascript'>
if (localStorage.getItem("Cart_items") != null) {

$("#procurselect").attr('disabled','disabled');
$("#procurselect").css('pointer-events','none'); // this makes it unclickable
$("#procurselect").prop( "disabled", true );

}
</script> 

问题是,即使我没有在我的购物车中添加任何商品,也会在firebug中的本地存储中显示1个项目,如下所示:

1 item in Storage Cart_items="{}"

因此我的条件总是不是NULL ....我怎么能克服这个?

我的代码是

if (localStorage.getItem("Cart_items") != null)  

不正确?????

我的目的是检查本地存储Cart_items中是否有任何值。

我正在使用jQuery。

请求帮助。提前谢谢。

更新

解决了以下问题:

function isObjectEmpty(object)
{
var isEmpty = false;
for(keys in object)
{
isEmpty = true;
break; // exiting since we found that the object is not empty
}
return isEmpty;
}


var myObject = JSON.parse( localStorage.getItem("Cart_items") );//object
var isEmpty  = isObjectEmpty(myObject); 
// check if the object is not empty
isEmpty  = isObjectEmpty(myObject); 
if (isEmpty){
//do something
}

感谢您提供的所有帮助......

1 个答案:

答案 0 :(得分:0)

问题是你在localstorage中有1个项目,这是你的空对象。

将支票更改为此选项,它应该有效。

var storedCart = JSON.parse(localStorage.getItem("Cart_items"));
if ( storedCart != null && Object.keys(storedCart).length>0)