我试图让我的表从列中计算单元格。
表格示例:
因此,金额是第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提示,谢谢!
答案 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>