我在使用javascript制作数组时遇到了麻烦。首先,我这样做了
for(var i=1; i <= rowCount-1; i++)
{
product[i-1] = [{
'product_id' : $('#product_id' + i).val(),
'name' : $('#item' + i).val(),
'model' : $('#model' + i).val(),
'reward' : $('#reward' +i).val(),
'subtract' : $('#subtract' + i).val(),
'minimum' : $('#minimum' + i).val(),
'shipping' : $('#shipping' + i).val(),
'tax_class_id' : $('#tax_class_id' + i).val(),
'weight' : $('#weight' + i).val(),
'quantity' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').val(),
'price' : $('table.order-table tbody tr[id=\''+ i +'\']').find('td.price').html(),
'total' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').parent().parent().find('td.total').html()
}];
}
在ajax帖子中将其作为参数传递后,我可以看到它将其作为
传递product[0][0][minimum]
product[0][0][model] 326
product[0][0][name] apple mac power
product[0][0][price] 100.0000
product[0][0][product_id] 50
product[0][0][quantity] 5
product[0][0][reward] 0
product[0][0][shipping] 1
product[0][0][subtract] 1
product[0][0][tax_class_i... 0
product[0][0][total] 500
product[0][0][weight] 0.00000000
product[1][0][minimum]
product[1][0][model] 326
product[1][0][name] apple mac power
product[1][0][price] 100.0000
product[1][0][product_id] 50
product[1][0][quantity] 7
product[1][0][reward] 0
product[1][0][shipping] 1
product[1][0][subtract] 1
product[1][0][tax_class_i... 0
product[1][0][total] 700
但我想要这样的东西
product[0][name] = "apple mac power"
所以我将代码更改为
for(var i=1; i <= rowCount-1; i++)
{
product = [{
'product_id' : $('#product_id' + i).val(),
'name' : $('#item' + i).val(),
'model' : $('#model' + i).val(),
'reward' : $('#reward' +i).val(),
'subtract' : $('#subtract' + i).val(),
'minimum' : $('#minimum' + i).val(),
'shipping' : $('#shipping' + i).val(),
'tax_class_id' : $('#tax_class_id' + i).val(),
'weight' : $('#weight' + i).val(),
'quantity' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').val(),
'price' : $('table.order-table tbody tr[id=\''+ i +'\']').find('td.price').html(),
'total' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').parent().parent().find('td.total').html()
}];
}
所以这样做之后它只显示1行数组,无论我有多少rowCount这样
product[0][minimum]
product[0][model] 326
product[0][name] apple mac power
product[0][price] 100.0000
product[0][product_id] 50
product[0][quantity] 7
product[0][reward] 0
product[0][shipping] 1
product[0][subtract] 1
product[0][tax_class_i... 0
product[0][total] 700
任何人都可以帮助我。?
提前致谢..
答案 0 :(得分:4)
您正在创建一个数组数组。取出第二个数组,如下所示:
for(var i=1; i <= rowCount-1; i++)
{
product[i-1] = { // Removed array open
'product_id' : $('#product_id' + i).val(),
'name' : $('#item' + i).val(),
'model' : $('#model' + i).val(),
'reward' : $('#reward' +i).val(),
'subtract' : $('#subtract' + i).val(),
'minimum' : $('#minimum' + i).val(),
'shipping' : $('#shipping' + i).val(),
'tax_class_id' : $('#tax_class_id' + i).val(),
'weight' : $('#weight' + i).val(),
'quantity' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').val(),
'price' : $('table.order-table tbody tr[id=\''+ i +'\']').find('td.price').html(),
'total' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').parent().parent().find('td.total').html()
}; // Removed array close
}
在JavaScript中,[]创建一个数组,因此[{object}]创建一个单元格数组。
另请注意,product [0] [“name”]与product [0] .name相同 - 在JavaScript中,属性也可用于索引语法。 product是您的数组,数组中的每个单元格都是一个对象,其属性包括name。
答案 1 :(得分:3)
在你的第一个版本中,你将数组分配给数组,它显示为2d数组。在第二个版本中,您始终将产品变量分配给新值,因此它只包含一个产品信息。因此,您可以通过删除[和]类似
来更新您的第一个版本for(var i=1; i <= rowCount-1; i++)
{
product[i-1] = {
'product_id' : $('#product_id' + i).val(),
'name' : $('#item' + i).val(),
'model' : $('#model' + i).val(),
'reward' : $('#reward' +i).val(),
'subtract' : $('#subtract' + i).val(),
'minimum' : $('#minimum' + i).val(),
'shipping' : $('#shipping' + i).val(),
'tax_class_id' : $('#tax_class_id' + i).val(),
'weight' : $('#weight' + i).val(),
'quantity' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').val(),
'price' : $('table.order-table tbody tr[id=\''+ i +'\']').find('td.price').html(),
'total' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').parent().parent().find('td.total').html()
};
}
或者您可以将第二个版本修改为
for(var i=1; i <= rowCount-1; i++)
{
product.push({
'product_id' : $('#product_id' + i).val(),
'name' : $('#item' + i).val(),
'model' : $('#model' + i).val(),
'reward' : $('#reward' +i).val(),
'subtract' : $('#subtract' + i).val(),
'minimum' : $('#minimum' + i).val(),
'shipping' : $('#shipping' + i).val(),
'tax_class_id' : $('#tax_class_id' + i).val(),
'weight' : $('#weight' + i).val(),
'quantity' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').val(),
'price' : $('table.order-table tbody tr[id=\''+ i +'\']').find('td.price').html(),
'total' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').parent().parent().find('td.total').html()
});
}
希望它会有所帮助。
答案 2 :(得分:1)
product[0]['name'] = "apple mac power"
或
product[0].name = "apple mac power"
而不是
product[0][name] = "apple mac power"
你的第一种方式是好的,但你添加一个内部有哈希的数组 只删除周围的[]
product[i-1] = {
'product_id' : $('#product_id' + i).val(),
'name' : $('#item' + i).val(),
'model' : $('#model' + i).val(),
'reward' : $('#reward' +i).val(),
'subtract' : $('#subtract' + i).val(),
'minimum' : $('#minimum' + i).val(),
'shipping' : $('#shipping' + i).val(),
'tax_class_id' : $('#tax_class_id' + i).val(),
'weight' : $('#weight' + i).val(),
'quantity' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').val(),
'price' : $('table.order-table tbody tr[id=\''+ i +'\']').find('td.price').html(),
'total' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').parent().parent().find('td.total').html()
};
而不是
product[i-1] = [{
'product_id' : $('#product_id' + i).val(),
'name' : $('#item' + i).val(),
'model' : $('#model' + i).val(),
'reward' : $('#reward' +i).val(),
'subtract' : $('#subtract' + i).val(),
'minimum' : $('#minimum' + i).val(),
'shipping' : $('#shipping' + i).val(),
'tax_class_id' : $('#tax_class_id' + i).val(),
'weight' : $('#weight' + i).val(),
'quantity' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').val(),
'price' : $('table.order-table tbody tr[id=\''+ i +'\']').find('td.price').html(),
'total' : $('table.order-table tbody tr td.quantity input[name=\'quantity'+ i +'\']').parent().parent().find('td.total').html()
}];