$ .each()没有正确地遍历数组
我有一个问题迭代关联数组与jQuery。我在html页面四跨一联......我使用JSON,形成文字的数组(),由这些值来构建维数组
var export_pkg = {
height : $('#cubeiq_hght').text(),
length : $('#cubeiq_lnth').text(),
depth : $('#cubeiq_wdth').text(),
weight : $('#cubeiq_wght').text()
};
$.each(export_pkg, function(key,value){
alert(key + ' ' + value);
});
对于原因,我想不通... export_pkg的长度始终是数组中长度的文本值。 Firefox和IE的开发人员工具都显示export_pkg是一个包含4个项目的数组,并且它具有正确的值。但是,当我到达$ .each块...它忽略该对象,并只使用第二个条目作为对象的长度。
示例:如果数组有一个{length:10},则无论其他值是多少,警告框都会出现10次。我无法弄清楚为什么它不能像我预期的那样运行4次。
这里是一个JSLint的链接http://jsfiddle.net/fFDfU/
你的对象有哪些$.each
使用遍历数组,在物业length
。既然你正在定义它,你就搞砸了方法的行为。尝试将名称更改为_length
var export_pkg = { height : '10', _length : '3', depth : '30', weight : '40' };
你有什么不是对象的数组,但属性的对象。数组的定义是这样的:
var array = [
{
height : $('#cubeiq_hght').text(),
length : $('#cubeiq_lnth').text(),
depth : $('#cubeiq_wdth').text(),
weight : $('#cubeiq_wght').text()
},
{
height : $('#cubeiq_hght').text(),
length : $('#cubeiq_lnth').text(),
depth : $('#cubeiq_wdth').text(),
weight : $('#cubeiq_wght').text()
},
{
...
}
];
那么你可以循环:
$.each(array, function() {
alert(this.height + ' ' + this.length + ...);
});
并实现你想实现(通过一个对象的属性环路)你可以这样做:
for (var propertyName in export_pkg) {
alert(propertyName + ' ' + export_pkg[propertyName]);
}
'each'可用于循环对象属性,如OP所需。 – 2011-05-13 14:10:00
首先,你是不是使用阵列,这是一个对象。但是,您可以根据需要使用each
迭代对象属性。
length
属性被each
用来查看需要迭代多少项。由于对象内部有一个length
,因此它会混淆each
。
我建议你更改属性名称:http://jsfiddle.net/ErickPetru/fFDfU/1/
是的,钉在头上先生...我覆盖了一个内置的财产。现在完美的工作! – DirtyBirdNJ 2011-05-13 14:38:18
好的。感谢由upvote。 – 2011-05-13 15:00:04
AHHHHH现在总有意义!我正在覆盖其中一个内置属性!非常感谢你! – DirtyBirdNJ 2011-05-13 14:11:55
@DirtyBirdNJ:不错,但正是我在3分钟之前所说的,并带着一把小提琴给你...... – 2011-05-13 14:17:03