我正在使用ColdFusion 8和jQuery 1.8。
我有一些来自数据库的信息并被填充到这样的div中:
<div class='SpecInfo' data-height='10' data-width='23' data-length='156'></div>
<div class='SpecInfo' data-height='20' data-width='21' data-length='159'></div>
<div class='SpecInfo' data-height='30' data-width='25' data-length='154'></div>
<div class='SpecInfo' data-height='40' data-width='27' data-length='155'></div>
<input type='button' id='GoButton' value='Go!'>
我需要提取该信息并将其放入数组并将其传递给CFC。我有一个收集数据的功能。它看起来像这样:
// SET VARS
$GoButton = $("#GoButton"),
SpecArray = {
Height: [],
Width: [],
Length: []
};
// GO
var go = function() {
var $SpecInfo = $(".SpecInfo"),
SpecInfoLen = $SpecInfo.length,
H,
W,
L;
for (i = 0; i < SpecInfoLen; i++) {
var H = $SpecInfo.eq(i).data('height'),
W = $SpecInfo.eq(i).data('width'),
L = $SpecInfo.eq(i).data('length');
// add H,W,L values to spec array
SpecArray['Height'].push(H);
SpecArray['Width'].push(W);
SpecArray['Length'].push(L);
}
// stringify spec array
// pass spec array to cfc
alert(SpecArray['Height'].length);
}
$GoButton.click(go);
这给了我一个高度数组,一个宽度数组和一系列长度。这不是我想要的。我的信息是这样组织的
[10,20,30,40]
[23,21,25,27]
[156,159,154,155]
对于每个div,我想在一个地方拥有所有属性。我想要更像这样的东西:
[10,23,156]
[20,21,159]
[30,25,154]
[40,27,155]
我做错了什么?我如何组织我的阵列?
答案 0 :(得分:5)
那么为什么要将所有数据放在3个独立的数组而不是对象数组中呢?
而不是
SpecArray['Height'].push(H);
SpecArray['Width'].push(W);
SpecArray['Length'].push(L);
使用
SpecArray.push( { 'height': H, 'width': W, 'length': L } );
这会产生一系列对象,如下所示:
[
{ 'height': 10, 'width': 23, 'length': 156 },
{ 'height': 20, 'width': 21, 'length': 159 },
{ 'height': 30, 'width': 25, 'length': 154 },
{ 'height': 40, 'width': 27, 'length': 155 }
]
您必须将SpecArray
初始化为数组,而不是包含3个数组的对象。