下面是我的本地存储键值对
产品中心:零
当我在JavaScript中以流水线访问它时,
let cartItemsList = localStorage.getItem("ProductsInCart");
console.log(cartItemsList)
cartItemsList值为空,
但当我用下面的条件检查它时,
if (cartItemsList != null) {
console.log('not null')
} else {
console.log('null')
}
输出不为空,
这是我的原始JavaScript代码,
var imgSrc = JSON.parse(sessionStorage.getItem('storedSingleProductImage'))
MainImg.src = imgSrc;
var sProductCategory = document.querySelector('#productCategory')
var sProductName = document.querySelector('#productName')
var sProductPrice = document.querySelector('#productPrice')
var sNumberOfproducts = document.querySelector('#numberOfproducts');
let sProdCategory = JSON.parse(sessionStorage.getItem('storedSingleProductCategory'))
let sProdName = JSON.parse(sessionStorage.getItem('storedSingleProductName'))
let sProdPrice = JSON.parse(sessionStorage.getItem('storedSingleItemPrice'))
sProductCategory.innerHTML = sProdCategory
sProductName.innerHTML = sProdName
sProductPrice.innerHTML = sProdPrice
let sNumberOfprod =1;
sNumberOfproducts.addEventListener('input', () => {
sNumberOfprod = sNumberOfproducts.value;
});
function addToCart() {
let cartItemsList = localStorage.getItem("ProductsInCart");
console.log(cartItemsList)
let cartItems = [];
//this condition true for null values also
if(cartItemsList !== null){
//I want parse a not null value for the JSON.parse() because it will pop a error otherwise
cartItems = JSON.parse(cartItemsList);
}
cartItems.push(
{
sProdCategory,
sProdName,
sProdPrice,
sNumberOfprod,
imgSrc
}
)
localStorage.setItem("ProductsInCart", JSON.stringify(cartItems));
alert(`${sNumberOfprod} items of ${sProdName}-(${sProdCategory}) added to the cart.`)
}
这是代码的输出
Uncaught TypeError: Cannot read properties of null (reading 'push')
at addToCart (sproduct.html:154:23)
at HTMLButtonElement.onclick (sproduct.html:54:58)
4条答案
按热度按时间wgx48brx1#
localStorage.setItem
将非字符串值保存为stringified
。您需要检查“null”或JSON.parse
之后的值。建议在使用localStore时始终使用以下 Package 器实用程序
lpwwtiir2#
如果条件Use JSON.parse while get data from localStorge之前,您没有解析过JSON对象。
goqiplq23#
在本地存储中,所有值都存储为String,因此当您获取item时,它将返回:
所以,在检查之前,你要么从字符串“null”中删除双引号:
或者你检查你的条件为“null”,比如:-
fiei3ece4#
您应该首先设置项目,并在Web浏览器的控制台中检查localstorage。