我有这段代码:
let cart = [];
let item1 = {
name: "CD - Animal",
price: "12",
qntd: "0"
};
let item2 = {
name: "CD - Cannibal",
price: "10",
qntd: "0"
};
$("button").click(function() {
event.preventDefault();
var li = $(this).parent();
var quantity = $(li).find('input[type=number]').val();
eval($(this).val()).qntd = quantity;
cart.push(eval($(this).val()));
console.log(item1.qntd);
localStorage.setItem(cart, JSON.stringify(cart));
console.log(cart[0].name);
console.log(JSON.parse((localStorage.getItem(cart[0].name))));
});
但cart[0].name
不返回对象的名称,而是返回null。
cart[0]
正确返回对象0:{name: "CD - Animal", price: "12", qntd: "3"}
,但当我尝试获取cart[0].name
时,它返回null而不是“CD - Animal”。
HTML:
<div class="card-content animal">
<form style = "display: flex; justify-content: space-between; flex-wrap: wrap;">
<input type = "number" class = "qntd" placeholder="Quantidade" style = "width: 100%; margin-top: -20px;" maxlength="10">
<button class="btn waves-effect waves-light" type="submit" name="action" value = "item1">Add
<i class="material-icons right">attach_money</i>
</button>
</form>
</div>
答案 0 :(得分:0)
这里的一个问题是eval很糟糕,你正在使用它,而你引用的变量不在全局范围内,而这正是eval所在的地方。使用更好的数据结构,不要依赖变量。
var items = [
{
name: "CD - Animal",
price: "12",
qntd: "0"
}, {
name: "CD - Cannibal",
price: "10",
qntd: "0"
}
]
现在您可以使用items[0].qntd
或者您想使用密钥,将其切换为对象而不是数组。
var items = {
item1: {
name: "CD - Animal",
price: "12",
qntd: "0"
},
item2: {
name: "CD - Cannibal",
price: "10",
qntd: "0"
}
}
答案 1 :(得分:0)
在已解析的localStorage
项目上使用索引。
尝试使用JSON.parse((localStorage.getItem(cart)))[0].name
代替
JSON.parse((localStorage.getItem(cart[0].name)));