如何从列计算表格单元格

时间:2017-04-28 17:33:45

标签: javascript

我试图让我的表从列中计算单元格。

表格示例:

example

因此,金额是第5列中的输入字段,总数已经从金额*价格计算得出。我想计算所有金额并将其添加到最后一行(动态创建,id为lastRow)。与总数相同。

所以基本上问题是如何从第5列访问所有单元格并将它们一起添加?然后到第6列同样的事情。如果我添加更多行,它也需要工作。我试过这样的但是我不知道如何继续:

void {your Widget}::createAction()
    QMenu *menu = new QMenu(this);
    for(int i=0; i < 10; ++i){
        QAction *action = new QAction(QString("action %1").arg(i));
        action->setObjectName(QString("%1").arg(i));
        connect(action, &QAction::triggered, this, &{your Widget}::onTriggeredAction);
        menu->addAction(action);
    }
}

void {your Widget}::onTriggeredAction()
{
    QAction *obj = qobject_cast<QAction *>(sender());
    int index = obj->objectName().toInt();
    qDebug()<<index;
}

没有jQuery提示,谢谢!

2 个答案:

答案 0 :(得分:0)

问题是row.children('td')[col]<td></td>元素,而不是单元格数据;你应该看row.children('td')[col].textContent。您可以使用Array.from将行转换为数组,并通过将Array.reduce添加到总和中来parseInt(row.cells[col].textContent, 10)来简化一点:

function calculate () {
    var col = 4;
    var rows = Array.from(tabell.rows);

    return rows.reduce((acc, row) => {
        return acc + parseInt(row.cells[col].textContent, 10);
    }, 0);
}

以下是非es6版本:

function calculate () {
    var col = 4;
    var rows = [].slice.call(tabell.rows, 0);

    return rows.reduce(function(acc, row) {
        return acc + parseInt(row.cells[col].textContent, 10);
    }, 0);
}

你可以learn more about Array.reduce here。以下是正在发生的事件的for循环版本:

var sum = 0;
for (var i = 0; i < rows.length; i++) {
   sum += parseInt(rows[i].cells[col].textContent, 10);
}

答案 1 :(得分:0)

一种非常简单的方法是在HTML中使用类。您可以向第5列单元格添加一个类,向第6列单元格添加另一个类。在那之后,你只需循环遍历那些类&#39;元素并总结起来。

HTML示例

-u

的Javascript

<tr>
  <td></td>
  <td></td>
  <td></td>
  <td></td>
  <td></td>
  <td class="col5">3</td>
  <td class="col6">6</td>
</tr>

Demo Here