0

1 つの列 (ランキング) を持つ単純な HTML フォーム/テーブルがあり、2 つのオプション (中または高) を含む選択メニューがあります。ランキング列のセルが「中」であるすべての行を見つけ、同じ行の別のセルの合計 (平均時間/週) を数え、セルが「高」であるすべての行に対してこれを繰り返す必要があります。サンプルの空のフォーム/テーブルを示す JS Fiddle を次に示します。

http://jsfiddle.net/53zfb/4/

行数は事前に固定されないことに注意してください。1 つ以上になる可能性があります。時間/週および週/年フィールドへの入力に基づいて平均時間/週を計算するスクリプトがありますが、2 つのランキングのそれぞれの合計も計算できません。

フォームにこれらの選択肢があるかどうかを明確にするために:

Row 1: Ranking = "Moderate" Average Hours/Week = 2
Row 2: Ranking = "High" Average Hours/Week = 4
Row 3: Ranking = "Moderate" Average Hours/Week = 6
Row 4: Ranking = "High" Average Hours/Week = 8

Total Moderate セルの値は * (6 + 2) になり、Total High セルの値は 12 (4+*) になります。理想的には、ランキング、時間/週、または週/年の値が任意の行で変更されるたびに、これが発生します。

これが私がこれまでに思いついたもので、私にとってはうまくいきません:

var moderateTotal = 0;
        var highTotal = 0;
        $("#activities").find("tr").each(function() {
    var tr = $(this);
    var level = tr.find("td:nth-child(2)").html();
    var value = tr.find("td:nth-child(5)").html();

    switch(level)
    {
        case "Moderate":
            moderateTotal += value*1;
        break;
        case "High":
            highTotal += value*1;
        break;
    }
});

$("#moderateTotal").val(moderateTotal);
    $("#highTotal").val(highTotal);

    });
4

1 に答える 1

0

イベントをおよびラベルonChange=MyFunc()内に変更してから、そこから関数を呼び出すことを検討してください。この関数は、コントロールをループするだけです (JSFiddle によって既に ID がインクリメントされています)。If ステートメントは制御のループを通過し、Risk# が (JSFiddle とは異なり) 各リスク選択グループの UNIQUE ID である場所をすべて見つけ、適切な値を実行中の合計に追加します。<input><select>Risk#="Moderate"

あなたはここで具体的なことを何も尋ねていないので、アイデアについて助けが必要だと思いました.これのための特定のコードは難しくありません. JSFiddle を使用して、コーディングに関する優れた知識を示しました。

可能な Javascript:

function MyOnChangeEvent() {
   var highTotal, modTotal;
   var rowCount, i;
   highTotal=0;
   modTotal=0;

   rowCount=5; //However many rows you have

   for (i=1; i<rowCount+1; i++) {
      switch (document.getElementById("C"+i)) {
         case "Moderate": modTotal++;
         case "High": highTotal++;
      }
   }

   document.getElementById("HighTotal") = highTotal;
   document.getElementById("ModerateTotal") = modTotal;
}

私はテストしていないので、これにはデバッグがある可能性がありますが、アイデアはそこにあります。経由で値を取得し、計算をdocument.getElementById(<ID OF TEXT BOXES>)実行します。

于 2012-06-18T15:36:52.207 に答える