Dir*_*dNJ 2 iteration jquery associative-array
我有一个问题迭代与jQuery的关联数组.我在html页面中有四个跨度...并且我使用json从那些形成一个text()值的数组来构建一个维数组
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);
});
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我无法弄清楚... export_pkg的长度始终是数组中长度的文本值.Firefox和IE的开发人员工具都将export_pkg显示为包含4个项目的数组,并且它具有正确的值.但是当我到达$ .each块时......它会忽略该对象,只使用第二个条目作为对象的长度.
示例:如果阵列的长度为{length:10},则无论其他值是多少,警报框都会出现10次.我无法弄清楚为什么它没有像我期望的那样运行4次.
这是一个jslint链接http://jsfiddle.net/fFDfU/
首先,你没有使用数组,它是一个对象.但您可以根据需要迭代对象属性each.
该length属性用于each查看需要迭代的项目数.由于您length的对象内部存在,因此会产生混淆each.
我建议你改变那个属性名称:http://jsfiddle.net/ErickPetru/fFDfU/1/
你拥有的不是一个对象数组,而是一个具有属性的对象.数组的定义如下:
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()
},
{
...
}
];
Run Code Online (Sandbox Code Playgroud)
然后你可以循环:
$.each(array, function() {
alert(this.height + ' ' + this.length + ...);
});
Run Code Online (Sandbox Code Playgroud)
要实现您想要实现的目标(遍历对象的属性),您可以这样做:
for (var propertyName in export_pkg) {
alert(propertyName + ' ' + export_pkg[propertyName]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1102 次 |
| 最近记录: |