我正在尝试创建array
objects
个$(".orderBtn").click(function(event){
//Show the order Box
$(".order-alert").show();
event.preventDefault();
//Create the Array
var productArray = [];
//Get reference to the product clicked
var stockCode = $(this).closest('li').find('.stock_code').html();
//Get reference to the quantity selected
var quantity = $(this).closest('li').find('.order_amount').val();
var key = "stockCode";
var obj = {
'stockCode' : stockCode,
'quantity' : quantity
};
productArray.push(obj);
$.cookie('order_cookie', JSON.stringify(productArray), { expires: 1, path: '/' });
console.log(productArray);
if(quantity == 0){
console.log("Quantity must be greater than 0")
}
,其中包含与订单相关的两条信息:
目前我这样做:
array
我希望每次单击订单按钮时,新对象都会添加到现有对象的array
,而只是输出{{1}}一个对象,对象I'我刚补充说。
我有什么遗失的吗?
答案 0 :(得分:4)
将函数外部的数组声明移动到全局范围内 在您的情况下,每次调用函数时都会创建一个新数组(函数范围),因此只生成一个结果。
阅读有关范围\提升的this。
var productArray = [];
$(".orderBtn").click(function(event){
//Show the order Box
$(".order-alert").show();
event.preventDefault();
//Create the Array
//Get reference to the product clicked
var stockCode = $(this).closest('li').find('.stock_code').html();
//Get reference to the quantity selected
var quantity = $(this).closest('li').find('.order_amount').val();
var key = "stockCode";
var obj = {
'stockCode' : stockCode,
'quantity' : quantity
};
productArray.push(obj);
$.cookie('order_cookie', JSON.stringify(productArray), { expires: 1, path: '/' });
console.log(productArray);
if(quantity == 0){
console.log("Quantity must be greater than 0")
}
答案 1 :(得分:2)
声明为全局变量
var productArray = [];
$(".orderBtn").click(function(event){
// do here
//productArray.push("anyObject");
});
答案 2 :(得分:1)
每次单击按钮时,您都在重新创建/覆盖productArray。尝试将var productArray = []
移动到点击处理程序之外
答案 3 :(得分:0)
不是这样,因为你的
var productArray = [];
位于设置cookie的函数内,因此它会重新定义,然后每次调用函数时都会添加一个元素。
您需要在函数外部定义productArray(作为全局变量?),以便保留其先前的值,并将新对象添加到其中
答案 4 :(得分:0)
使用var productArray = [];
,您每次点击都会声明一个新阵列。将该行移动到click处理程序之外,代码应该开始工作。