项目中本来用的是ext做前台开发的,但是ext不好实现合并行,所以用jsp写了个动态合并的功能,效果如图:
现在的问题是我在输入车数的时候,比如:区域:一炼钢,渣类:D渣,对应了四个去向,输入4个1的时候,日累计车数自动计算,应该生成4,,而一炼钢,1#滚筒渣 车数输入2的时候,日累计车数应该为2,但是因为jsp是通过循环得到的数据,然后根据名称相同的合并,任何字段只有一个ID,现在无法准备判断,我输入的哪几列的的车数,相加应该放到哪一列的日累计车数下。 问题我觉得有点难,希望有高手能帮忙解决下,非常感谢!顶者有分!现在分数最多只能给100分,多个论坛里都有,明天再加。希望大家能帮帮忙
解决方案 »
- 求指点.....chrome浏览器怎么查看链接地址..
- 各位大哥,帮帮小弟
- java反射调用方法后,该方法中不能使用成员变量
- 270分 求一个网页音乐播放器
- pushlet 高手请进 --------求pushlet示例
- 各位大侠帮帮小弟,javaScript验证问题,运行后没有显示验证结果,大家帮忙看下是什么问题,谢谢啦
- MSSQL2K+Struts如何配置数据源?
- 初学者的问题,jsp 调用不了javabean. 很简单的,就是不行。
- 刚刚搞明白JBuilder开发的程序改界面的方法,和大家讨论讨论心得。
- JAVA 读xml和properties那个快
- myeclipse 自带的tomcat与外带的tomcat6.0!!!!!!!!
- pageContext.forward问题
<input type=text onblur="countme(this,'区域id'+'渣类ID')"/>
每个日累计车数里面,假设:
<td><div id = "区域id'+'渣类ID"></div></td>js里面实现计算:
function countme(obj,div_id){
//非空且为整数,则相加后再赋值到div中去。
if(obj.value!=''&&isInt(obj.value){
document.getElememtById(div_id).innerHTML=parseInt(document.getElememtById(div_id).innerHTML)+obj.value;
}
}
当计算车数的时候,找到标示值相等的文本框那就加起来,并且把值可以写入数据库到指定的ID位置。
谢谢crazylaa 给我提供的思路,我今天按照你的思路做了下,效果差不多可以实现了,就是有点小问题,因为文本框是onblur事件,只要焦点失去的时候document.getElememtById(div_id).innerHTML 就会相加,改为onchange事件也一样,因为document.getElememtById(div_id).innerHTML没有清空,但是我又不知道如何清空值,现在该成:
if(obj.value != "" ){
document.getElementById(div_id).innerHTML = document.getElementById(div_id).innerHTML - 0 + parseInt(obj.value) ;
}
还是用onchage事件吧。
另外上面那个思路,有个问题没有考虑到:原来的值是1,现在改为2,则总数只能加1,所以,可能还需要一个隐藏变量(假设其id为'Pre'+'区域id'+'渣类ID')来记录修改前的值(空则为0)。这样假设
var totalObj = document.getElememtById(div_id);
则onchange之后,
totalObj.innerHTML = parseInt(totalObj.innerHTML)+(obj.vale - preValue);清空的话,直接
document.getElememtById(div_id).innerHTML='';
即可。
if(document.getElememtById(div_id).innerHTML=='')
totalObj.innerHTML = obj.vale - preValue;
我说 document.getElememtById(div_id).innerHTML没有清空的意思 ,其实也就是 你说的原来的值是1,现在改为2,则总数只能加1 ,我以为清空就好了。但是发现清空后,后面的值都为null了, preValue 是怎么得到的了?是你说的 隐藏变量(假设其id为'Pre'+'区域id'+'渣类ID') 吗?但是 隐藏变量不只是个id吗?能不能麻烦综合下,帮我写个方法
你把html贴出来吧,我试试看。
存成html即可
<html>
<head>
</head>
<script>
function countme(obj,div_id,pre_id){
if(obj.value!=''){
//前一个值
var preval = document.getElementById(pre_id).value;
//当前div值
var t = document.getElementById(div_id+'_value').value; //显示
document.getElementById(div_id).innerHTML = parseInt(t) + parseInt(obj.value) - parseInt(preval);
//赋前一个值
document.getElementById(pre_id).value = obj.value;
//赋当前div值
document.getElementById(div_id+'_value').value = parseInt(t) + parseInt(obj.value) - parseInt(preval);
}
}
</script>
<body>
<form>
<table colspan="1" border="1">
<tr>
<td>id1aaa</td>
<td>id2aaa</td>
<td>textaaa</td>
<td>totalaaa</td>
</tr>
<tr>
<td>id1</td>
<td>id2</td>
<td><input type="hidden" id="pre_id1_id2_text1_value" value="0"/><input type="text" onchange="countme(this,'id1_id2','pre_id1_id2_text1_value');" /></td>
<td>total</td>
</tr>
<tr>
<td>id1</td>
<td>id2</td>
<td><input type="hidden" id="pre_id1_id2_text2_value" value="0"/><input type="text" onchange="countme(this,'id1_id2','pre_id1_id2_text2_value');" /></td>
<td> <div id="id1_id2">0</div><input type="hidden" id="id1_id2_value" value="0"/></td>
</tr>
<tr>
<td>id1</td>
<td>id2</td>
<td><input type="hidden" id="pre_id1_id2_text3_value" value="0"/><input type="text" onchange="countme(this,'id1_id2','pre_id1_id2_text3_value');" /></td>
<td>total</td>
</tr>
</form>
</body>
</html>
<table width="100%" height="100%" border="0" cellpadding="0"
cellspacing="0" class="table_main">
<tr>
<td valign="top">
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr>
<td>
<div id="advancedSearch" style="visible: yes">
<table width="100%" border="0" cellspacing="1" cellpadding="1"
class="table_search">
<tr>
<td align="left">
<form name="form1" method="post" action="">
<table border="0" width="100%" align="left" cellpadding="0"
cellspacing="0" class="content12">
<tr>
<td align="right">
统计日期
</td>
<td align="left">
<div id="statisticDateDiv"></div>
</td>
<td>
<input id="baseSaveBtn" type="button" value="保 存"
class="button2" onclick="saveBasicInfo()">
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td>
<div id="gridDiv"
style="visible: yes; overflow: auto; height: 400px">
<table width="100%" border="0" cellspacing="1" cellpadding="1"id="table1">
<form id="myform" name="myform">
<tr>
<td colspan="4">
<input name="add" type="button" class="button2"
onClick="addBaseInfo();" value="添 加">
<input name="del" type="button" class="button2"
onClick="delBaseInfo(document.myform.trZhaRegionPlaceId);"
value="删 除">
</td>
</tr>
<tr bgcolor=skyblue height=25 align="center">
<td>
<input type="checkbox"
onClick="cc(document.myform.trZhaRegionPlaceId)">
</td>
<td>
序号
</td>
<td>
区域
</td>
<td>
渣类
</td>
<td>
车数
</td>
<td>
吨位
</td>
<td>
去向
</td>
<td>
是否出厂
</td>
<td>
日累计车数
</td>
<td>
日累计吨位
</td>
<td>
总计车数
</td>
<td>
总计吨位
</td>
</tr>
<tr class="table_c1">
<td>
<input type="checkbox" value="618"
id="trZhaRegionPlaceId" name="trZhaRegionPlaceId">
</td>
<td>
1
</td>
<td>
一炼钢
</td>
<td>
D渣
</td>
<td>
<input type="text" name="carQty" id="carQty" size="8"
onchange="doCheck1(this,614615)" value="">
</td>
<td>
<input type="text" name="tonnage" id="tonnage" size="8"
onblur="doCheck2(this)" value="">
</td>
<td>
<input type="hidden" id="placeName" name="placeName"
value="闷罐">
闷罐
</td>
<td>
<input type="checkbox" id="isProduce" name="isProduce"
checked="checked">
</td>
<td>
<div id="614615"></div>
</td>
<td>
<div id="oneTonnage"></div>
</td>
<td>
<div id="sumCarQty"></div>
</td>
<td>
<div id="sumTonnage"></div>
</td>
</tr>
<tr class="table_c1">
<td>
<input type="checkbox" value="620"
id="trZhaRegionPlaceId" name="trZhaRegionPlaceId">
</td>
<td>
2
</td>
<td>
一炼钢
</td>
<td>
D渣
</td>
<td>
<input type="text" name="carQty" id="carQty" size="8"
onchange="doCheck1(this,614615)" value="">
</td>
<td>
<input type="text" name="tonnage" id="tonnage" size="8"
onblur="doCheck2(this)" value="">
</td>
<td>
<input type="hidden" id="placeName" name="placeName"
value="灰池">
灰池
</td>
<td>
<input type="checkbox" id="isProduce" name="isProduce">
</td>
<td>
<div id="614615"></div>
</td>
<td>
<div id="oneTonnage"></div>
</td>
<td>
<div id="sumCarQty"></div>
</td>
<td>
<div id="sumTonnage"></div>
</td>
</tr>
<tr class="table_c1">
<td>
<input type="checkbox" value="622"
id="trZhaRegionPlaceId" name="trZhaRegionPlaceId">
</td>
<td>
3
</td>
<td>
一炼钢
</td>
<td>
D渣
</td>
<td>
<input type="text" name="carQty" id="carQty" size="8"
onchange="doCheck1(this,614615)" value="">
</td>
<td>
<input type="text" name="tonnage" id="tonnage" size="8"
onblur="doCheck2(this)" value="">
</td>
<td>
<input type="hidden" id="placeName" name="placeName"
value="出厂">
出厂
</td>
<td>
<input type="checkbox" id="isProduce" name="isProduce">
</td>
<td>
<div id="614615"></div>
</td>
<td>
<div id="oneTonnage"></div>
</td>
<td>
<div id="sumCarQty"></div>
</td>
<td>
<div id="sumTonnage"></div>
</td>
</tr>
<tr class="table_c1">
<td>
<input type="checkbox" value="624"
id="trZhaRegionPlaceId" name="trZhaRegionPlaceId">
</td>
<td>
4
</td>
<td>
一炼钢
</td>
<td>
D渣
</td>
<td>
<input type="text" name="carQty" id="carQty" size="8"
onchange="doCheck1(this,614615)" value="">
</td>
<td>
<input type="text" name="tonnage" id="tonnage" size="8"
onblur="doCheck2(this)" value="">
</td>
<td>
<input type="hidden" id="placeName" name="placeName"
value="开发">
开发
</td>
<td>
<input type="checkbox" id="isProduce" name="isProduce">
</td>
<td>
<div id="614615"></div>
</td>
<td>
<div id="oneTonnage"></div>
</td>
<td>
<div id="sumCarQty"></div>
</td>
<td>
<div id="sumTonnage"></div>
</td>
</tr>
</form>
</table>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<script type="text/javascript">
var parentWin = window.parent;
var scrollTop = document.body.scrollTop;
var scrollLeft = document.body.scrollLeft;
if (parentWin.grid_.operatorType==1){
clearValues();
} else if (parentWin.grid_.operatorType==2){
setValues();
}
function clearValues(){
$("statisticDate").disabled= false;
$("statisticDate").value = "<%=date%>";
}
function setValues(){
var m = parentWin.grid_.getSelectionModel().getSelections();
$("statisticDate").disabled= true;
$("statisticDate").value = m[0].get("statisticDate");
}
//复选框全选或是反选功能
function cc(oj) {
for (var i=0;i<oj.length;i++ ) {
if (oj[i].checked)
{
oj[i].checked=false;
} else
{
oj[i].checked=true;
}
}
}
</script>
<%-- 总合计吨位的合并 begin--%>
<SCRIPT type="text/javascript">
function uniteTable5(thistab){
var rn=thistab.rows.length;//取得行数
var rowspann=0;
var j = 2;
var m = 11;
var colcnt=new Array();
for(var k=0;k<rn;k++){
colcnt[k]=0;
}
for(i=rn-1;i>0;i--){//从倒数第一行开始往上检查
if(thistab.rows[i].cells[j].childNodes[0].data==thistab.rows[i-1].cells[j].childNodes[0].data&&thistab.rows[i].cells[j].colSpan==thistab.rows[i-1].cells[j].colSpan)
{//与上面一行比较,如果两行相等就合计当前行的合并行数,并删除当前行。
rowspann+=thistab.rows[i].cells[m].rowSpan;
colcnt[i]++;
thistab.rows[i].deleteCell(m);
}else {
thistab.rows[i].cells[m].rowSpan+=rowspann;//如果不等就完成当前相同数据的合并。
rowspann=0;
}
}
}
uniteTable5(document.getElementById("table1"));
</SCRIPT>
<%-- 总合计吨位的合并 end--%> <%-- 总合计车数的合并 begin--%>
<SCRIPT>
function uniteTable4(thistab){
var rn=thistab.rows.length;//取得行数
var rowspann=0;
var j = 2;
var m = 10;
var colcnt=new Array();
for(var k=0;k<rn;k++){
colcnt[k]=0;
}
for(i=rn-1;i>0;i--){//从倒数第一行开始往上检查
if(thistab.rows[i].cells[j].childNodes[0].data==thistab.rows[i-1].cells[j].childNodes[0].data&&thistab.rows[i].cells[j].colSpan==thistab.rows[i-1].cells[j].colSpan)
{//与上面一行比较,如果两行相等就合计当前行的合并行数,并删除当前行。
rowspann+=thistab.rows[i].cells[m].rowSpan;
colcnt[i]++;
thistab.rows[i].deleteCell(m);
}else {
thistab.rows[i].cells[m].rowSpan+=rowspann;//如果不等就完成当前相同数据的合并。
rowspann=0;
}
}
}
uniteTable4(document.getElementById("table1"));
</SCRIPT>
<%-- 总合计车数的合并 end--%> <%-- 日累计吨位合并 begin--%>
<SCRIPT>
function uniteTable3(thistab,colLength){
var rn=thistab.rows.length;//取得行数
// alert("当前共有"+rn)
var rowspann=0;
var j = 3;
var m = 9;
var colcnt=new Array();
for(var k=0;k<rn;k++) {
colcnt[k]=0;
}
for(i=rn-1;i>0;i--) {//从倒数第一行开始往上检查
if(thistab.rows[i].cells[j].childNodes[0].data==thistab.rows[i-1].cells[j].childNodes[0].data&&thistab.rows[i].cells[j].colSpan==thistab.rows[i-1].cells[j].colSpan)
{//与上面一行比较,如果两行相等就合计当前行的合并行数,并删除当前行。
rowspann+=thistab.rows[i].cells[m].rowSpan;
colcnt[i]++;
thistab.rows[i].deleteCell(m);
}else {
thistab.rows[i].cells[m].rowSpan+=rowspann;//如果不等就完成当前相同数据的合并。
rowspann=0;
}
}
}
uniteTable3(document.getElementById("table1"));
</SCRIPT>
<%-- 日累计吨位合并 end--%> <%-- 日累计车数合并 begin--%>
<SCRIPT>
function uniteTable2(thistab){
var rn=thistab.rows.length;//取得行数
// alert("当前共有"+rn)
var rowspann=0;
var j = 3;
var m = 8;
var colcnt=new Array();
for(var k=0;k<rn;k++) {
colcnt[k]=0;
}
for(i=rn-1;i>0;i--) {//从倒数第一行开始往上检查
if(thistab.rows[i].cells[j].childNodes[0].data==thistab.rows[i-1].cells[j].childNodes[0].data&&thistab.rows[i].cells[j].colSpan==thistab.rows[i-1].cells[j].colSpan)
{//与上面一行比较,如果两行相等就合计当前行的合并行数,并删除当前行。
rowspann+=thistab.rows[i].cells[m].rowSpan;
colcnt[i]++;
thistab.rows[i].deleteCell(m);
}else {
thistab.rows[i].cells[m].rowSpan+=rowspann;//如果不等就完成当前相同数据的合并。
rowspann=0;
}
}
}
uniteTable2(document.getElementById("table1"));
</SCRIPT>
<%-- 日累计车数合并 end--%> <%-- 渣类合并 begin--%>
<SCRIPT>
function uniteTable1(thistab){
var rn=thistab.rows.length;//取得行数
// alert("当前共有"+rn)
var rowspann=0;
var j = 3;
var colcnt=new Array();
for(var k=0;k<rn;k++) {
colcnt[k]=0;
}
for(i=rn-1;i>0;i--) {//从倒数第一行开始往上检查
if(thistab.rows[i].cells[j].childNodes[0].data==thistab.rows[i-1].cells[j].childNodes[0].data&&thistab.rows[i].cells[j].colSpan==thistab.rows[i-1].cells[j].colSpan)
{//与上面一行比较,如果两行相等就合计当前行的合并行数,并删除当前行。
rowspann+=thistab.rows[i].cells[j].rowSpan;
colcnt[i]++;
thistab.rows[i].deleteCell(j);
}else {
thistab.rows[i].cells[j].rowSpan+=rowspann;//如果不等就完成当前相同数据的合并。
rowspann=0;
}
}
}
uniteTable1(document.getElementById("table1"));
</SCRIPT>
<%-- 渣类合并 end--%> <%-- 区域合并 begin--%>
<SCRIPT>
function uniteTable(thistab){
var rn=thistab.rows.length;//取得行数
var rowspann=0;
var j = 2;
var colcnt=new Array();
for(var k=0;k<rn;k++){
colcnt[k]=0;
}
for(i=rn-1;i>0;i--){//从倒数第一行开始往上检查
if(thistab.rows[i].cells[j].childNodes[0].data==thistab.rows[i-1].cells[j].childNodes[0].data&&thistab.rows[i].cells[j].colSpan==thistab.rows[i-1].cells[j].colSpan)
{//与上面一行比较,如果两行相等就合计当前行的合并行数,并删除当前行。
rowspann+=thistab.rows[i].cells[j].rowSpan;
colcnt[i]++;
thistab.rows[i].deleteCell(j);
}else {
thistab.rows[i].cells[j].rowSpan+=rowspann;//如果不等就完成当前相同数据的合并。
rowspann=0;
}
}
}
uniteTable(document.getElementById("table1"));
</SCRIPT>