javascript - 添加单独结果的结果
问题描述
提前感谢您的任何回复。我是 JavaScript 新手,在计算我需要的 2 个结果方面已经走了这么远。我的问题是如何将两个结果加在一起?
请看下面的第一个结果:
$(document).ready(function() {
function checkSum(e) {
var result = 0;
$(".checksum").each(function() {
var i = 0;
if ($(this).val() != "") {
i = parseFloat($(this).val());
}
result = result + i;
});
$("#resultsum").html(result * 60.60);
}
checkSum();
$(".checksum").bind("keyup", checkSum);
});
这是第二个:
$(document).ready(function() {
function checkSum2(e) {
var result2 = 0;
$(".checksum2").each(function() {
var j = 0;
if ($(this).val() != "") {
j = parseFloat($(this).val());
}
result2 = result2 + j;
});
$("#resultsum2").html(result2 * 14.88);
}
checkSum2();
$(".checksum2").bind("keyup", checkSum2);
});
解决方案
我已将您的代码段合并为一个,以删除您拥有的冗余代码。这种方法将允许您在将来添加更多校验和(.checksum3?),并确保您的计算逻辑对所有人都是相同的。
每当任何校验和发生变化时,结果都会计算到新元素中。试试下面的片段:
// function to calculate checksum
// used for both individual results as well as for total
function calcChecksum(elements) {
let result = 0;
elements.each( function(index, ele) {
result = result + (parseFloat($(ele).val()) || 0)
});
return result;
}
// update total result
function updateTotal() {
let total = calcChecksum($('.result'));
$('#resultsum_total').val(total);
}
$(document).ready(function() {
// generate function for each set of checksum inputs
function genCheckSumFn(inputSel, outputSel, multiplier) {
return () => {
const result = calcChecksum($(inputSel));
$(outputSel).val(result * multiplier);
updateTotal();
}
}
//checkSum bindings
$(".checksum").bind("keyup",
genCheckSumFn('.checksum','#resultsum',60.60)
);
$(".checksum2").bind("keyup",
genCheckSumFn('.checksum2','#resultsum2',14.88)
);
// trigger initial calculation
$(".checksum").trigger('keyup');
$(".checksum2").trigger('keyup');
});
.checksum,
.checksum2{
display: block;
}
.box {
padding:10px 0px;
}
.box div {
margin-top:5px;
}
.box.results input {
color: #FFA500;
border:0px;
font-size: 14px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box">
Checksum
<input class="checksum" value="10">
<input class="checksum" value="5">
Checksum(2)
<input class="checksum2" value="20">
<input class="checksum2" value="15">
<div>
<div class="box results">
<div> Resultsum:
<input id="resultsum" class="result" readonly> </div>
<div> Resultsum(2):
<input id="resultsum2" class="result" readonly> </div>
<div> Resultsum(Total): <input id="resultsum_total" readonly> </div>
</div>
推荐阅读
- algorithm - 我怎么知道使用数学公式在半欧拉图或欧拉图上抬起笔的最少次数?
- javafx - 设置为在命令行中使用 JAVAFX
- javascript - 尝试使用 template7 文字中的属性名称中的空格访问和对象
- angular - 如何编写两个测试用例在 Jasmine 中切换布尔值
- python - 内存有效的平均成对距离
- react-native - 如何在屏幕顶部呈现模式
- amazon-web-services - 如何将 CodeBuild 与不同帐户中的 CodeCommit 存储库链接?
- mdriven - “sqlLike”和“sqlLikeCaseInsensitive”转义字符?
- r - 如何使用 Rstudio 连接到在 AWS RDS 上运行的 Oracle 数据库
- python - 从 SQL 查询中提取的动态运行 Python 脚本