Javascript 未定义显示在我的表格下方-会话存储
下面的代码可以工作,但问题是“未定义”显示在我的表格下面。我试图删除Javascript 未定义显示在我的表格下方-会话存储,javascript,Javascript,下面的代码可以工作,但问题是“未定义”显示在我的表格下面。我试图删除sessionStorage.basket==未定义的,但它删除了整个表。有人能帮我吗 // Load basket on page window.onload = loadBasket; // Displays basket in page. function loadBasket() { // Get basket from local storage or create one if it does not ex
sessionStorage.basket==未定义的
,但它删除了整个表。有人能帮我吗
// Load basket on page
window.onload = loadBasket;
// Displays basket in page.
function loadBasket() {
// Get basket from local storage or create one if it does not exist
var basketArray;
if(sessionStorage.basket === undefined || sessionStorage.basket === "") {
// Store as an array
basketArray = [];
}
else {
// Parse the data as an object
basketArray = JSON.parse(sessionStorage.basket);
}
// Build string with basket HTML
var htmlStr = "<form action='php/checkout.php' method='post'>";
// Get table body
var tableBody;
// Display table headers
var tableHeader = "<tr><th>Product Image</th><th>Product Name</th><th>Price</th></tr>\n";
// Store IDs as array
var prodIDs = [];
// For loop to display more products on the table
for(var i=0; i<basketArray.length; ++i) {
tableBody += "<tr><td class='image_column'>" + "<img class='basket_img' src='" + basketArray[i].image + "'>" + "</td><td>" + basketArray[i].name + "</td><td>£" + basketArray[i].price + "</td></tr>";
// Push data to insert into the database
prodIDs.push({
image: basketArray[i].image,
name: basketArray[i].name,
price: basketArray[i].price,
count: 1
});
}
// Add hidden field to form that contains stringified version of product ids.
htmlStr += "<input type='hidden' name='prodIDs' value='" + JSON.stringify(prodIDs) + "'>";
// Display the number of items in the basket
htmlStr += "<p class='basket_items'>Number of items in basket: " + "<span style='color:red'>" + basketArray.length + "</span>" + "</p>";
// Add checkout and empty basket buttons
htmlStr += "<button class='empty_basket' onclick='emptyBasket()'>Empty Basket</button>";
htmlStr += "<input class='checkout_button' type='submit' value='Checkout'></form>";
// Display number of products in basket
document.getElementById("basketDiv").innerHTML = htmlStr;
// Display table
document.getElementById("basket_list").innerHTML = tableHeader + tableBody;
}
//在第页加载篮
window.onload=装载篮;
//在页面中显示篮子。
函数loadBasket(){
//从本地存储中获取篮子,如果篮子不存在,则创建一个篮子
var basketArray;
if(sessionStorage.basket==未定义| | sessionStorage.basket====“”){
//存储为数组
basketArray=[];
}
否则{
//将数据解析为对象
basketArray=JSON.parse(sessionStorage.basket);
}
//用basket-HTML构建字符串
var htmlStr=“”;
//取得桌身
var表体;
//显示表格标题
var tableHeader=“产品图像产品名称价格\n”;
//将ID存储为数组
var prodIDs=[];
//用于循环以在表上显示更多产品
对于(var i=0;i使用localStorage
而不是sessionStorage
,直到没有具体的使用原因为止
原因:
sessionStorage
在每个窗口都可用,您可能在其他窗口上存储了basket的值,并试图进入其他窗口
localStorage
与sessionStorage
之间的区别:
本地存储
存储在localStorage
中的数据会一直保存,直到被明确删除。所做的更改将被保存,并可用于所有当前和将来的站点访问
会话存储
对于sessionStorage
,更改仅在每个窗口(或Chrome和Firefox等浏览器中的选项卡)可用。所做的更改将被保存并可用于当前页面,以及在同一窗口上对站点的未来访问。关闭窗口后,存储将被删除
你的问题:
首先确保您在localStorage
中正确设置了值(对象数组)
localStorage.setItem("basket", JSON.stringify(basketvalues));
if(localStorage.getItem("basket") === undefined || localStorage.getItem("basket") === "") {
// Store as an array
basketArray = [];
}
else {
// Parse the data as an object
basketArray = JSON.parse(localStorage.getItem("basket"));
}
现在loadBasket()
函数中的条件如下:
localStorage.setItem("basket", JSON.stringify(basketvalues));
if(localStorage.getItem("basket") === undefined || localStorage.getItem("basket") === "") {
// Store as an array
basketArray = [];
}
else {
// Parse the data as an object
basketArray = JSON.parse(localStorage.getItem("basket"));
}
有关本地存储的更多信息,请阅读以下链接:
应该是sessionStorage.getItem('basket'))
而不是sessionStorage.basket
我这样做了,但是仍然显示undefined。您是否为其设置了值?否。我如何设置值?请在编写代码之前阅读此内容。我已将其更改为本地存储,但我仍然看到undefined。您如何将其存储到本地存储?同时共享该代码我已将sessionostrage更改为localStor年龄,对吗?@User786首先您需要将值正确设置为localStorage。如何将值设置为localStorage?localStorage.basket