javascript - 如何计算多行的总和?

标签 javascript html

<分区>

您好,我正在使用 this table计算总和。我需要做的是从 r1、r2、r3 下面的文本框中获取输入,然后从下面的框中计算总和 例如:- totalcost= r1.value*5+r2.value*6+r3.value*5 像这样它必须发生在每一行值 onclick ....我该怎么做?

这里是我的代码:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function updatesum() {
var totalFields = document.input.time.length;
for(var i=0; i <= totalFields; i++){
    document.input.total[i].value = ( document.input.time[i].value * document.input.cost[i].value);
}
return false; 
}
</script>

<style>
input {
    float: right;
}
</style>
</head>
<body>
<form name="input" action="#" method="post" onsubmit="return false;">
<table border="1">
<tr><th>Sl.no</th><th>id</th><th>title</th><th>R1<br><input type="text" name="cost" value=" "></th><th>R2<br><input type="text" name="cost" value=" "></th><th>R3<br><input type="text" name="cost" value=" "></th><th>Total Cost</th></tr>
<tr><td>1</td><td>1.1</td><td>task1</td><td><input type="text" name="time" value="5" disabled></td><td><input type="text" name="time" value="6" disabled></td><td><input type="text" name="time" value="5" disabled></td><td><input type="text" name="cost" value=" " disabled></td></tr>
<tr><td>2</td><td>1.2</td><td>task1</td><td><input type="text" name="time" value="7" disabled></td><td><input type="text" name="time" value="8" disabled></td><td><input type="text" name="time" value="2" disabled></td><td><input type="text" name="cost" value=" " disabled></td></tr>
<tr><td>3</td><td>1.4</td><td>task1</td><td><input type="text" name="time" value="9" disabled></td><td><input type="text" name="time" value="4" disabled></td><td><input type="text" name="time" value="7" disabled></td><td><input type="text" name="cost" value=" " disabled></td></tr>
<tr><td colspan="7"><input type="submit" value="submit" name="submit" onclick="updatesum()"></td></tr>
</table>
</form>
</body>
</html>

最佳答案

我会按照这些思路去做:

var i, j, k, sum, tdlist,
    trlist = document.getElementsByTagName("tr"),
    multipliers = [5, 6, 5];
//start with 1 to ignore first line
for (i=1; i < trlist.length; i++) {
    tdlist = trlist[i].childNodes;
    sum = 0;
    k = 0;
    //j start with the fourth td and stop before the last one
    for (j=3; j < tdlist.length-1; j++) {
        sum += parseInt(tdlist[j].firstChild.value, 10) * multipliers[k];
        k++;
    }
    // Set the last element value
    trlist[i].lastChild.firstChild.value = sum;
}

编辑:忘记乘数

关于javascript - 如何计算多行的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16955782/

相关文章:

javascript - 如何使 Chrome 输入不可选择(但允许编辑)?

javascript - 如果输入(类型数字)值超过 50,则禁用提交按钮

php - 从页表用户 Codeigniter 显示新页表详细信息

javascript - 用 Angular 计算坐标

javascript - 通过 css 去除所有悬停效果

javascript - 当条件为真时链式 promise

javascript - $(document).ready() 并不总是在 Chrome 扩展的内容脚本中触发

html - CSS: Bootstrap 网格

javascript - 缓存 HTML 中内嵌的 Javascript

javascript - 如何计算动态表每行总计