2017-06-02 23 views
0

私は、いくつかの入力をある数字の平均を計算するために挿入する必要があり、ヌル値を除外しなければならないテーブルがあります。私はほとんどそれをやったが、真ん中にはまった。ここで、コードは次のとおりです。JavaScriptを使用して平均を計算する簡単な方法

function calcAvg(input_id, output_id, co_id) { 
 
    //Get all elements with 'class="select"' 
 
    var selects = document.getElementsByClassName(input_id); 
 
    //Initialize vars 
 
    var avg = 0; 
 
    var count = 0; 
 
    //Calculate average 
 
    for (var i = 0; i < selects.length; i++) { 
 
    if (selects[i].value != "") { 
 
     count++; 
 
     avg += Number(selects[i].value); 
 
     //Alert for debugging purposes 
 
     //alert(selects[i].value+" "+avg); 
 
    } 
 
    } 
 
    avg = avg/count; 
 
    //Output average 
 
    document.getElementById(output_id).value = avg; 
 
}
<table> 
 
    <tr> 
 
    <td height="41" colspan="12" align="center">ATTAINMENT OF PO(PO-CO MAPPING) 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td width="17%" rowspan="2" align="center">NAME OF THE MODULES</td> 
 
    <td height="34" colspan="11" align="center">PROGRAME OUTCOMES</td> 
 
    <td height="34" colspan="11" align="center">MODULE CO</td> 
 
    </tr> 
 
    <tr> 
 
    <td width="7%" align="center">PO1</td> 
 
    <td width="7%" align="center">PO2</td> 
 
    <td width="7%" align="center">CO AVERAGES</td> 
 
    </tr> 
 
    <tr> 
 
    <td height="71" align="center">MATHEMATICS</td> 
 
    <td align="center"><input type="number" class="select1" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select1','calculation1','calc_co1');" style="width:60px">&nbsp; 
 
    </td> 
 
    <td align="center"><input type="number" class="select2" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select2','calculation2','calc_co1');" style="width:60px">&nbsp; 
 
    </td> 
 
    <td align="center"><input type="text" name="Module_co1" id="calc_co1" readonly style="width:60px">&nbsp;</td> 
 
    </tr> 
 
    <tr> 
 
    <td height="71" align="center">SCIENCE</td> 
 
    <td align="center"><input type="number" class="select1" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select1','calculation1','calc_co2');" style="width:60px">&nbsp; 
 
    </td> 
 
    <td align="center"><input type="number" class="select2" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select2','calculation2','calc_co2');" style="width:60px">&nbsp; 
 
    </td> 
 
    <td align="center"><input type="text" name="Module_co2" id="calc_co2" readonly style="width:60px">&nbsp;</td> 
 
    </tr> 
 
    <tr bgcolor="#9999CC"> 
 
    <td height="71" align="center">PO AVERAGES</td> 
 
    <td align="center"><input type="text" name="Avg" id="calculation1" readonly style="width:60px">&nbsp;</td> 
 
    <td align="center"><input type="text" name="Avg1" id="calculation2" readonly style="width:60px">&nbsp;</td> 
 
    </tr> 
 

 
</table>

私は垂直方向と水平方向の両方に平均値を計算する必要があります。私は水平に計算したが、垂直方向の計算にはまった。論理は、垂直位置に挿入される値が同じになります。私は平均値が入力値と同じであることを知っていますが、テキストボックスに表示する必要があります。それを垂直に計算する方法があれば、ここでもヌル値を除外する必要があります。

+3

あなたのインデントは本当に厄介とフォローするのは難しいです。これはちょうどあなたのコード形式を改善することによって、はるかに良い問題になるでしょう。また、 'type =" text/jscript "はありません。私は実際にそのタイプの '

関連する問題