0

我有这个代码:

/* Modify the footer row to match what we want */
var nCells = nRow.getElementsByTagName('th');
nCells[1].innerHTML = iPageCPSV;
nCells[2].innerHTML = iPageCGV;
nCells[3].innerHTML = iPagePPSV;
nCells[4].innerHTML = iPagePGV;

它按原样工作得很好。但是,我<tr>现在在该部分中添加了另一个。而且我无法弄清楚如何<th>在第二个中填充<tr>

<tfoot>
    <tr style="background-color: #DDDDDD;">
        <th align="right" colspan="6">
            Page Total:
        </th>
        <th align="left"></th>
        <th align="left"></th>
        <th align="left"></th>
        <th align="left"></th>
    </tr>
    <tr style="background-color: #DDDDDD;">
        <th align="right" colspan="6">
            Downline Total:
        </th>
        <th align="left"></th>
        <th align="left"></th>
        <th align="left"></th>
        <th align="left"></th>
    </tr>
</tfoot>

在我添加第二个之前<tr><th>一切正常。它仍然有效,我只是不知道如何将数据填充到第二行。谁能帮我修改现有的 JavaScript 或告诉我如何将它复制到 jQuery 中?

4

1 回答 1

5

没有 jQuery...

var foot = nRow.getElementsByTagName('tfoot')[0];
foot.rows[0].cells[1].innerHTML = iPageCPSV;
foot.rows[0].cells[2].innerHTML = iPageCGV;
foot.rows[0].cells[3].innerHTML = iPagePPSV;
foot.rows[0].cells[4].innerHTML = iPagePGV;

foot.rows[1].cells[1].innerHTML = iPageCPSV;
foot.rows[1].cells[2].innerHTML = iPageCGV;
foot.rows[1].cells[3].innerHTML = iPagePPSV;
foot.rows[1].cells[4].innerHTML = iPagePGV;

或与...

var foot = $('tfoot').first();

foot.children().each(function(i, row) {

    row.cells[1].innerHTML = iPageCPSV;
    row.cells[2].innerHTML = iPageCGV;
    row.cells[3].innerHTML = iPagePPSV;
    row.cells[4].innerHTML = iPagePGV;
});

更现代的解决方案...

var rows = nRow.getElementsByTagName('tfoot')[0].rows,
    data = [iPageCPSV, iPageCGV, iPagePPSV, iPagePGV];

[].forEach.call(rows, function(el, i) {
    data.forEach(function(item, ii) {
        el.cells[ii + 1].innerHTML = item;
    });
});

由于每个单元格需要不同的数据,我建议将它们全部放在一个数组中,获取所有元素的集合,然后将两者配对......

var data = [iPageCPSV, iPageCGV, iPagePPSV, iPagePGV, 'foo', 'bar', 'baz', 'buz'];

$('tfoot > tr > th:not(:first-child)').html(function(i, el) {
    return data[i];
});
于 2012-06-01T21:19:02.637 回答