我正在遍历一个表以从每个表行中选择表单元素。在以下示例中我在做什么错?
var result = new Array();
var counter = 1;
$('tbody tr', this.el).each(function(){
var inner = new Array();
$('input',this).each(function(){
console.log(this.name, $(this).val()); // Works: sends name/value to console!
inner[this.name] = $(this).val(); // Appears to be empty
});
result[counter] = inner;
counter++;
});
console.log(result);
最佳答案
您在做数组错误。
在Javascript中,数组是对象的特例,它仅具有数字键,并且具有由诸如push
之类的函数定义的接口:
var myArray = [];
myArray.push("first element");
myArray.push("second element");
myArray.push("third element");
您正在犯一个非常常见的错误,即尝试使用像更通用的对象这样的数组,分配字符串键并使用
x[y] = z
表示法来这样做。这是一种hack,有时似乎碰巧可以用,但并不是应该如何使用数组。您使用
inner
和result
遇到相同的问题。相反,请首先使用您尝试使用的通用对象:
var result = {}; // <!-- create new _object_
var counter = 1;
$('tbody tr', this.el).each(function() {
var inner = {}; // <!-- create new _object_
$('input', this).each(function() {
var val = this.value;
console.log(this.name, val);
inner[this.name] = val;
});
result[counter] = inner;
counter++;
});
console.log(result);
关于jquery - jQuery:不能迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7311280/