`
zhsq_java
  • 浏览: 60979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

在前台计算table列的合计值

    博客分类:
  • JS
阅读更多
实现的js方法:
function totalTable(tbl){
	var allRows = tbl.rows; //所有的行
	var allCells = new Array(); //所有的单元格
	var totalCells = new Array(); //所有的合计单元格
	for(var ri=0; ri < allRows.length; ri++){
		var cellsInRow = allRows[ri].cells;
		for(var ci=0; ci<cellsInRow.length; ci++){
			allCells.push(cellsInRow[ci]);
			if(cellsInRow[ci].getAttribute("totalfor") && cellsInRow[ci].getAttribute("totalfor") != ""){
				totalCells.push(cellsInRow[ci]);
			}
		}
	}

	for(var j=0; j<totalCells.length; j++){
		var total1 = 0;
		for(var k=0; k<allCells.length; k++){
			if(totalCells[j].getAttribute("totalfor") === allCells[k].getAttribute("totalgroup")){
				var v = parseFloat(allCells[k].innerHTML);
				if(!isNaN(v)){
					total1 += v;
				}
			}
		}
		totalCells[j].innerHTML = total1;
	}
}


在调用这个方法之前要在要合计的td标签上加上自定义标签totalgroup,在合计的td标签上加上自定义标签totalfor,并且两者要相互对应。以下为jsp代码片段。
......
<table id="tableTbl">
......
<tbody id="tbody">
		                  <c:forEach items="${datas}" var="d">
			                  <tr>
			                    <td><app:dictname dictid="${d.townId}" disfields="dictcode dictname" /></td>
			                    <td><app:dictname dictid="${d.reason}"/></td>
			                    <td totalgroup="cntYW">${d.cntYW}</td>
			                    <td totalgroup="cntSX">${d.cntSX}</td>
			                    <td totalgroup="cntYY">${d.cntYY}</td>
			                    <td totalgroup="cntZZ">${d.cntZZ}</td>
			                    <td totalgroup="cntWL">${d.cntWL}</td>
			                    <td totalgroup="cntHX">${d.cntHX}</td>
			                    <td totalgroup="cntSW">${d.cntSW}</td>
			                    <td totalgroup="cntLS">${d.cntLS}</td>
			                    <td totalgroup="cntDL">${d.cntDL}</td>
			                    <td totalgroup="cntStu">${d.cntStu}</td>
			                  </tr>
		                  </c:forEach>
		                  <tr>
		                  	<td colspan="2">合计</td>
		                  	<td totalfor="cntYW"></td>
		                  	<td totalfor="cntSX"></td>
		                  	<td totalfor="cntYY"></td>
		                  	<td totalfor="cntZZ"></td>
		                  	<td totalfor="cntWL"></td>
		                  	<td totalfor="cntHX"></td>
		                  	<td totalfor="cntSW"></td>
		                  	<td totalfor="cntLS"></td>
		                  	<td totalfor="cntDL"></td>
		                  	<td>${stuAllCount}</td>
		                  </tr>
	                  </tbody>
......
</table>
......


然后在body的onload里面调用就好了
<body onload="totalTable(document.getElementById('tableTbl'));">

还想做成totalgroup可以支持多个值的,现在用不着,先算了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics