0

テーブル列の各行 (rowCount) の値を追加し、合計 (QT_BOX * rowCount = prodQty) を出力する JavaScript ループを作成する必要があります。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」が何かわかりません。しかし、あなたのコードでは、ループ内の繰り返しごとに同じ値「rowCount」で「QT_BOXES」を設定していることがわかります。したがって、BoxesGrid は 50 行のグリッドであるため、合計で常に 50 行になると思います。

「for」句のすべての値を合計してから、「QT_BOXES」を「for」句の外に設定する必要があります。

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 に答える