2

我有几个结构相似的 HTML 表格。它们看起来都像这样:

<table cellspacing="1" cellpadding="7" summary="Procedure Tabulate: Table 1" frame="box" rules="groups" class="table table-bordered table-hover highchart-table">
    <thead>
        <tr>
            <th scope="col" rowspan="2" class="c m Header">&nbsp;</th>
            <th scope="col" class="c Header">3</th>
        </tr>
        <tr>
            <th scope="col" class="c Header">CA R</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th scope="row" class="l t RowHeader">Fours</th>
            <td class="r b Data">10268.64</td>
        </tr>
        <tr>
            <th scope="row" class="l t RowHeader">Hifi</th>
            <td class="r b Data">11267.82</td>
        </tr>
        <tr>
            <th scope="row" class="l t RowHeader">Magneto</th>
            <td class="r b Data">11575.91</td>
        </tr>
        <tr class="blue-bg">
            <th scope="row" class="l t RowHeader">Total</th>
            <td class="r b Data">33112.36</td>
        </tr>
    </tbody>
</table>

我想用一类 highchart-table 遍历所有表并检索 CA R(thead 的最后一行的最后一个单元格)并创建关联数组,其中 tbody 内的 th 和 td 除了最后的“总行”(例如: Fours => 10268.61, Hifi => 11575.91, Magneto => 11575.91)。

我的最终目标是创建一个像这样的数组:

hcArr[0]['ind'] = 'CA R';
hcArr[0]['Fours'] = 10268.61;
hcArr[0]['Hifi'] = 11575.91;
hcArr[0]['Magneto'] = 11575.91;

然后 have hcArr[1]which 包含下一个表的内容,其类为highchart-table.

目前我唯一有效的代码是:

$.each( $( '.highchart-table' ), function( key, value ) {

});

我不知道如何从当前循环中的表格到获取它的行和单元格。

任何帮助将非常感激。

4

2 回答 2

1

这不是最终解决方案,但这将为您提供标题单元格中的初始值。你可以从中推断得到其他人。http://jsfiddle.net/tM546/

var theadValues = $.map($('.highchart-table'), function (idx, el) {
    return $(idx).find('thead tr:last th:last').text();
});
于 2013-03-12T17:08:28.007 回答
1

像这样的东西应该工作:

var res = [];

$(".highchart-table").each(function() {
  var $$ = $(this), obj = {};
  obj.ind = $(this).find('thead tr:last th:last').text();
  $$.find("tbody th").each(function(){
    obj[$(this).text()] = parseFloat($(this).siblings("td").text());
  });
  res.push(obj);
});

console.log(res);

顺便说一句,javascript中的数组只有数字索引,所以它会返回一个对象数组,如下所示:

[
  { "ind": "CA R", "Fours": 10268.64, "Hifi": 11267.82, "Magneto": 11575.91 },
  { "ind": "CA R", "Fours": 10268.64, "Hifi": 11267.82, "Magneto": 11575.91 },
  ...
]
于 2013-03-12T17:52:50.660 回答