0

我需要创建一个 javascript 循环,它将添加表列的每一行 (rowCount) 的值并输出总数 (QT_BOX * rowCount = prodQty)。rowCountupdates 很好,但 prodQty 总是返回 50 的值。我想我一定忽略了一些东西,但似乎找不到它......

function updateCounters(){
    var gridObject = document.BoxesGrid.getGridObject();
    var rowCount = gridObject.getRowCount();
    for(var i=0; i <= rowCount; i++){
        var prodQty = gridObject.getCellValueByName(i, "QT_BOX");
        document.getElementById("QT_READ").value =prodQty;
        document.getElementById("QT_BOXES").value = rowCount;
    }       
}
4

2 回答 2

0

我不知道“BoxesGrid”是什么。但是通过您的代码,我看到您在循环中的每次重复中都将“QT_BOXES”设置为相同的值“rowCount”。所以我猜 BoxesGrid 是一个有 50 行的网格,这就是为什么你总能得到 50 行的原因。

您应该对“for”子句中的每个值求和,然后在“for”子句之外设置“QT_BOXES”。

function updateCounters(){
    var gridObject = document.BoxesGrid.getGridObject();
    var rowCount = gridObject.getRowCount();
    var tot = 0;
    for(var i=0; i <= rowCount; i++){
        var prodQty = gridObject.getCellValueByName(i, "QT_BOX");
        document.getElementById("QT_READ").value =prodQty;
        tot += prodQty;
    }       
    document.getElementById("QT_BOXES").value = tot;
}
于 2013-01-14T19:55:13.633 回答
0

在您的 FOR 循环中,您使用当前行的 prodQty(或 QT_BOX)更新“QT_READ”。但它永远不会添加到之前的数量,因此您将始终拥有最后一行的 prodQty!

下面是它的样子:

function updateCounters(){
    var gridObject = document.BoxesGrid.getGridObject();
    var rowCount = gridObject.getRowCount();
    for(var i=0; i <= rowCount; i++){
        var prodQty = gridObject.getCellValueByName(i, "QT_BOX");
        var total = document.getElementById("QT_READ").value;
        document.getElementById("QT_READ").value = prodQty + total;
        document.getElementById("QT_BOXES").value = rowCount;
    }       
}
于 2013-01-14T19:50:12.313 回答