【发布时间】:2024-05-23 04:50:02
【问题描述】:
我正在生成菜肴列表(它们是对象),当用户单击按钮时,InitializeFoodList() 应将所选项目添加到 sessionStorage。然后在 RetrieveDataFromCart() 中,我想遍历 sessionStorage 并在控制台中显示所有这些项目。
问题是最终结果是 item 属性为 null 或者它只是显示最后添加的项目而下一个为 null。
有谁知道更好的方法来实现这一点?
var list = [{
id: 1,
name: "Spaghetti",
price: 15,
category: "main",
pictureSrc: "images/food/spaghetti.jpg"
},
{
id: 2,
name: "Lasagne",
price: 20,
category: "main",
pictureSrc: "images/food/Lasagne.jpg"
},
{
id: 3,
name: "Coca-cola",
price: 5,
category: "drinks",
pictureSrc: "images/food/cola.jpg"
},
{
id: 4,
name: "Chicken",
price: 12,
category: "main",
pictureSrc: "images/food/chicken.jpg"
},
];
function InitializeFoodList() {
var foodList = $('#foodList');
for (let i = 0; i < list.length; i++) {
const element = list[i];
var buttonText = '<button class="btn btn-primary add" id="add' + i + '">+</button><button class="btn btn-primary" name="remove">-</button>';
foodList.append("<li class='list-inline-item'><h4>" + element.name + "</h4><p>" + element.price + " zł</p><img alt=''height='200' width='200' class='img-thumbnail' src='" + element.pictureSrc + "'><br>" + buttonText + "</li>");
$('#add' + i).click(function() {
sessionStorage.setItem("cart", JSON.stringify(element));
});
}
}
function RetrieveDataFromCart() {
var elements = [];
for (let i = 0; i < sessionStorage.length; i++) {
var element = JSON.parse(sessionStorage.getItem(localStorage.key(i)));
elements.push(element);
console.log(element.name);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<button onclick="InitializeFoodList()">Click me</button>
<button onclick="RetrieveDataFromCart()">Retrieve</button>
<ul id="foodList" class="list-inline"></ul>
</div>
【问题讨论】:
标签: javascript jquery html session-storage