jQuery -获取重量和等级输入值,并根据公式计算结果

ulydmbyx  于 2023-03-29  发布在  jQuery
关注(0)|答案(1)|浏览(166)

我需要编写代码,根据以下公式计算重量和等级输入的结果

Weighted grade =
 = w1×g1+ w2×g2+ w3×g3
 = 30%×80+ 50%×90+ 20%×72 = 83.4

以下是我当前的代码

function total(){
    var grade = 0;  
    var weight = 0;  

    $("[name='grade']").each(function() {
        grade += Number(this.value);
    });
    $("[name='weight']").each(function() {
       weight += Number(this.value);
    });
    $(".results").text((weight * grade + weight * grade)/weight);
}
$("[name='grade'],[name='weight']").on("keyup", total);
total();

请检查下面的行,让我知道如果我需要做任何编辑,以达到正确的结果

$(".results").text((weight * grade + weight * grade)/weight);
lmyy7pcs

lmyy7pcs1#

从这个问题中,我们不太清楚你是否在处理基于 * 一组公共权重 * 的 * 多个等级 *(和 * 结果 *),但以下解决方案是基于这个假设的:

const w=$("tfoot input").on("input",_=>trs.each((i,tr)=>calc.call(tr))).get();
      trs=$("tbody tr").on("input",calc);
function calc(){
 let wsum=w.reduce((a,c)=>+c.value+a,0);
 $(".results",this).text($("input",this).get().reduce((a,c,i)=>w[i].value*c.value+a,0)/wsum)
}
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<table><thead><tr><th>subj 1</th><th>subj 2</th><th>subj 3</th><th>results</th></tr></thead><tbody>
<tr><td><input type="text" name="grade"></td><td><input type="text" name="grade"></td><td><input type="text" name="grade"></td><td class="results"></td></tr>
<tr><td><input type="text" name="grade"></td><td><input type="text" name="grade"></td><td><input type="text" name="grade"></td><td class="results"></td></tr>
<tr><td><input type="text" name="grade"></td><td><input type="text" name="grade"></td><td><input type="text" name="grade"></td><td class="results"></td></tr>
<tr><th colspan="4">weights:</th></tr>
</tbody><tfoot>
<tr><td><input type="text" name="weight" value="30"></td><td><input type="text" name="weight" value="50"></td><td><input type="text" name="weight" value="20"></td><td class="results"></td></tr></tfoot></table>

函数calc()计算表中发生输入的行的最终加权等级(由this标识)。它由每个tbody tr元素的“输入”事件触发。每当其中一个权重发生变化时,* 所有 * 分级行都需要重新计算。这是通过在所有trs上执行each-循环来实现的(jQuery对象)。通过使用Function.prototype.call()方法将每个tr分配给calc()函数的this

相关问题