简单的javascript循环来汇总网格列

时间:2013-01-14 19:39:43

标签: javascript loops

我需要创建一个javascript循环,它将添加表列的每一行(rowCount)中的值并输出总数(QT_BOX * rowCount = prodQty)。 rowCountupdate很好,但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;
    }       
}

2 个答案:

答案 0 :(得分: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;
    }       
}

答案 1 :(得分:0)

我不知道“BoxesGrid”是什么。但是通过你的代码,我发现你在循环中的每次重复中都以相同的值“rowCount”设置“QT_BOXES”。所以我猜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;
}