1

我正在使用 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]

我究竟做错了什么?如何组织我的阵列?

4

1 回答 1

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 个数组的对象。

于 2012-11-08T16:35:27.110 回答