热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

js综合应用简单的表格统计

在做调查问卷的过程中,遇到一个表格的统计问题,算是需要些js方面的综合知识,所以记录下来。基本需求如下:核心的htm如下:divclass"tablebox"><h2>...SyntaxHighlighter.all();
 在做调查问卷的过程中,遇到一个表格的统计问题,算是需要些js方面的综合知识,所以记录下来。
基本需求如下:
  
 核心的htm如下:
 
 
div class="tablebox">  
                        

(3)2010年市属疾病预防控制中心信息化建设资金来源及分配情况

说明:单位:万元,精确到小数点后1位

  • 政府财政 单位自筹 其他资金 合计
    直接支出 软件 金额: 来源:
    硬件 金额: 来源:
    运行维护 金额: 来源:
    其他投入 金额: 来源:
    经费下拨 金额: 来源:
    合计

 

看到这样的基本需求,本身并不难,基本思路就是在更新数据后,失去了焦点的同时,更新对应的合计文本框。难点在于获取需要累加那些文本框的值。
1如果只知道合计的文本框ID如何得到需要累加的文本框编号呢?
先分析行统计,可以发现,行统计需要的文本框和合计的文本框都在同一个tr标签中,而且都有类digital。例如82row1需要计算的文本框text_4780,text_4782,text_4783
都在同一个tr标签中,而且类都有digital(这样就可以排除不需要统计的文本框text_4784)。
 所以基本的思路就是根据这个关系去寻找需要统计的文本框,例如对于82row1就需要找到文本框text_4780,text_4782,text_4783。
经过测试的基本js代码如下:
 
function GetOneRowAllChild(totalId)  
{  
   var idList = [];  
   var tdList=$("#"+totalId).parent(&#39;td&#39;).parent().children("td");//取统计文本框的父节点td的父节点tr,然后再取tr的子节点,得到同一行的所有td  
    $.each(tdList, function(i, n){//循环td  
     var inputs=$(n).children("input[type=&#39;text&#39;]");//得到td中的文本框  
     if(inputs.length>0)  
     {  
     $.each(inputs, function(j, itemInput){  //循环td中的文本框          
          var item=$(itemInput);  
         if(item.hasClass("digital"))//判断是不是需要的文本框,排除来源列的文本款  
          {  
           var id=item.attr("id");  
            idList.push(id);  
          }       
      });  
     }  
});  
//var NameList = idList.join(",");  
//alert(NameList);  
 BindBlur(idList,totalId);  
}  
function BindBlur(idList,totalId)//绑定失去焦点的事件blur  
{  
   $.each(idList, function(j, item){       
        var id=item;  
        $("#"+id).blur( function () { updateSum(idList,totalId) } );          
      });  
}  
function updateSum(idList,totalId)//更新统计值  
{  
   var sum=0.0;  
   $.each(idList, function(j, item){       
        var id=item;  
           var value=$("#"+id).val();     
           if($.isNumeric(value))  
           {  
            sum+=parseFloat(value);  
           }  
      });  
      $("#"+totalId).val(sum);  
}  

 

 
2有了获取每一行的的文本框的思路后,在考虑每一列的思路,和获取每一行的思路基本相同,但在修改的过程中,发现还是有很多不同。
经过测试的代码如下
 
function GetOneColumnAllChild(totalId,index)  
{  
 var idList = [];  
  var trList=$("#"+totalId).parent(&#39;td&#39;).parent(&#39;tr&#39;).parent().children("tr");////取统计文本框的父节点td的父节点tr的父节点table,然后再取table的子节点,得到所有tr  
    $.each(trList, function(i, n){  //遍历所有的tr  
     var tdList=$(n).children("td") //     
     if(tdList.length>0)  
     {  
      var inputindex=0;  
      $.each(tdList, function(j, item){ //遍历所有的td  
      //   if(j==index)// 由于直接支出,导致如果这样取数据会出错,因为第一行多了一个td,其他含都比第一行少了一个td  
    // {      
         var inputList=$(item).children("input[type=&#39;text&#39;]");    
         if(inputList.length>0) {          
              $.each(inputList, function(k, iteminput){ //遍历所有的文本框  
                  var item=$(iteminput);   
                if(item.hasClass("digital")){  
                  inputindex++;  
                 if(inputindex==index){     //支取指定列的文本框                 
                   idList.push(item.attr("id"));  
                 }  
                }     
              });//end   inputList  
           }//  end  if(inputList.length>0)     
      });// end   tdList  
     }   //  if(tdList.length>0)  
   });//end  trList  
   BindBlur(idList,totalId);  
 //var NameList = idList.join(",");  
 //alert(NameList);  
}  

 

总结:初次遇见此类问题,真的没有什么比较好的思路。这样虽然初步算是解决了,但灵活性很小,例如每一个单元格只能有一个需要统计的文本框,多个就会出错。不过根据现在最简单如果进行扩展,就会适应更复杂的情况。
 

推荐阅读
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了在git中如何对指定的commit id打标签,并解决了忘记打标签的问题。通过查找历史提交的commit id,可以在任意时间点打上标签。同时,还介绍了git中的一些常用命令和操作。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了在Python中检查字符串是否为字母、数字或空白字符的几种方法,包括使用str.isalnum()、str.isalpha()、str.isdigit()和str.isspace()等函数进行判断。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
author-avatar
caozhizhao
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有