我在页面上循环浏览一些HTML表单元素。
var itemsArray = new Array();
$('input[type="text"].qty').each(function(index) {
if($(this).val()) {
itemsArray[index]['qty'] = $(this).val();
itemsArray[index]['itemPrice'] = $(this).parents('.control-group').find('.itemPrice').val();
itemsArray[index]['itemID'] = $(this).parents('.control-group').find('.itemID').val();
}
});
index
我希望是0,1,2,3等...就像常规数组一样。将子元素关联起来并分配给各种值。
我在控制台中收到此错误。
TypeError: itemsArray[index] is undefined
答案 0 :(得分:6)
在开始使用它之前,您需要确保外部数组中的每个项都已初始化。注意,为了清楚起见,我在下面改为对象符号。
$('input[type="text"].qty').each(function(index) {
if($(this).val()) {
itemsArray[index] = {};
itemsArray[index].qty = $(this).val();
itemsArray[index].itemPrice = $(this).parents('.control-group').find('.itemPrice').val();
itemsArray[index].itemID = $(this).parents('.control-group').find('.itemID').val();
}
});
答案 1 :(得分:3)
考虑使用一组对象。 Javascript中的数组并不是真正用于您的方式(多维部分)。 itemsArray = []
也优先于new Array()
。
var itemsArray = [];
$('input[type="text"].qty').each(function(index) {
if($(this).val()) {
itemsArray.push({
qty : $(this).val(),
itemPrice : $(this).parents('.control-group').find('.itemPrice').val(),
itemID : $(this).parents('.control-group').find('.itemID').val()
});
}
});
答案 2 :(得分:1)
这意味着它所说的。 itemsArray[index]
为undefined
,您无法为此指定属性。请注意,您没有“多维数组”,只有对象的数组。对于每个新index
,您需要创建一个新对象。
var $this = $(this);
if ($this.val()) {
var $parent = $(this).parents('.control-group'); // .closest() should suffice
itemsArray[index] = {
qty: $this.val(),
itemPrice: $parent.find('.itemPrice').val(),
itemID: $parent.find('.itemID').val()
};
}