我已经尝试在整个论坛中搜索并建议帖子,但不是我想要的。
问题是::单击列表项时,我在函数cart.push(item);
内的addItemToCart
中收到标题中提到的错误。我发现这是由于未声明数组引起的,但是我相信ei已经声明了它。
问题是:我是否正确声明了数组变量的范围?还是我在其他事情上有问题?
这是html部分:
<div>
<ul>
<li><a class="add-to-cart" href="#" data-name="Apple" data-price="1.99">Product1</li>
</ul>
</div>
此html部分通过下一个 click函数被引用到脚本内部:
$(".add-to-cart").click(function(event){
event.preventDefault(); // --> Prevents page from refreshing
var name = $(this).attr("data-name");
var price = Number($(this).attr("data-price"));
addItemToCart(name, price, 1);
});
这部分是在JS脚本的开头声明两个变量的地方:
var cart = [];
var Item = function(name, price, count){
this.name = name
this.price = price
this.count = count
};
这部分也在我的脚本中,属于我要执行的功能:
function addItemToCart(name, price, count){
for (var i in cart){
if (cart[i].name === name){
cart[i].count += count;
//cart[i].count += count;
return;
}
}
var item = new Item(name, price, count);
cart.push(item);
saveCart();
}
最后3部分代码位于我的<scope> </scope>
预先感谢我能解决此问题的任何帮助。
答案 0 :(得分:0)
您没有在主范围中定义购物车。您必须在作为addItemToCart函数作用域父级的作用域中定义购物车。
另一种替代方法是使用
window.cart = [];
或者对于node.js
global.cart = [];