javascript实现动态显示颜色块的报表效果


Posted in Javascript onApril 10, 2017

利用html的颜色块动态展示数据

<style type="text/css">
 *{
 padding: 0;
 margin: 0;
 }
 .tubiao,.jihua,.shiji,.riqi{
 width: 100%;
 overflow: hidden;
 margin-top: 10px;
 }
 .left{
 width: 10%;
 float: left;
 text-align: center;
 height: 25px;
 line-height: 25px;
 }
 .right{
 width: 90%;
 float: right;
 height: 25px;
 }
 span {
 width: 5%;
 height: 100%;
 text-align: center;
 display: inline-block;
 }
 </style>
<body>
 <div class="tubiao">
 <div class="jihua">
 <div class="left">计划</div>
 <!--计划span存放的地方-->
 <div class="right plan"></div>
 </div>
 <div class="shiji">
 <div class="left">实际</div>
 <!--实际span存放的地方-->
 <div class="right act"></div>
 </div>
 <div class="riqi" id="day_id">
 <!--日期存放的地方-->
 <div class="right day"></div>
 </div>
 </div>
 <script type="text/javascript">
 var temp1="0-0.5-2-2-2-2-1-1";//计划耗时(块的单位宽度)
 var temp2="1-1-2-1-2-0-0-0";//实际耗时(块的单位宽度) 
 var temp3="5/19-5/20-5/21-5/22-5/23-5/24-5/25-5/26-5/27-5/28";//综合日期
 var temp=temp1+"~"+temp2+"~"+temp3; 
 var plan = document.getElementsByClassName("plan")[0];
 var act = document.getElementsByClassName("act")[0];
 var day = document.getElementsByClassName("day")[0];
 var num = 20;//创建多少个格
 load_first(temp);
 //分割数据和添加色块操作
 function load_first(temp){
 var demo=temp.split("~");
 var d1=demo[0].split("-");//计划耗时(块的单位宽度)数组
 var d2=demo[1].split("-");////实际耗时(块的单位宽度)数组
 var d3=demo[2].split("-");//综合日期数组
 for(var i=0;i<d3.length;i++){
 time_span(d3[i]);
 }
 //alert("6:"+d1.length+"---"+"3:"+d2.length);
 //alert("d3.length:"+d3.length);
 for(var i=0;i<d1.length;i++){ 
 add_span(d1[i],d2[i],i);
 }
 document.getElementById("day_id").style.marginLeft="-30px"; 
 } 
 //新增颜色块,a为计划颜色块宽度,b为实际颜色块宽度
 function add_span(a,b,i){
 //创建span块
 var span1 = document.createElement("span");
 var span2 = document.createElement("span");
 //定义随机底色
 var spa = "rgba(" + rnd(0,255)+ "," + rnd(0,255)+ ","+ rnd(0,255)+ ","+ rnd(0.5,1) +")";//每一个颜色随机出来
 if(i==0){
 span1.style.backgroundColor = "000000";
 //clientWidth是对象看到的宽度(不含边线,即border)
 span1.style.width = (plan.clientWidth/num*a) + "px";//计划的每一格的宽度
 //插入节点span1至plan
 plan.appendChild(span1);
 span2.style.backgroundColor = "000000";
 span2.style.width = (plan.clientWidth/num*b) + "px";//实际的每一格的宽度
 act.appendChild(span2);
 }else{
 //alert("a:"+a+"b:"+b+"i:"+i);
 if(a=="0"){
 span1.style.backgroundColor = "000000"; 
 span1.style.width = (plan.clientWidth/num*a) + "px";//计划的每一格的宽度
 //插入节点span1至plan
 plan.appendChild(span1);
 }else{
 span1.style.backgroundColor = spa;
 //clientWidth是对象看到的宽度(不含边线,即border)
 span1.style.width = (plan.clientWidth/num*a) + "px";//计划的每一格的宽度
 //插入节点span1至plan
 plan.appendChild(span1);
 }
 if(b=="0"){
 span2.style.backgroundColor = "000000";
 span2.style.width = (plan.clientWidth/num*b) + "px";//实际的每一格的宽度
 act.appendChild(span2); 
 }else{
 span2.style.backgroundColor = spa;
 span2.style.width = (plan.clientWidth/num*b) + "px";//实际的每一格的宽度
 act.appendChild(span2);
 } 
 }
 } 
 //日期的数据插入
 function time_span(time){
 //创建span块
 var span = document.createElement("span"); 
 span.style.width = (plan.clientWidth/num*1) + "px";//每一个span的宽度 
 span.innerHTML = "" + time;
 day.appendChild(span);
 }
 //随机函数
 function rnd(min,max){
 return Math.round(Math.random()*(max - min)+min); 
 }
 function QueryData() {
 var displayStyle = "1";
 $.ajax({
 type: "post",
 url: "Test.aspx",
 dataType: "text",
 data: { "DispalyStyle": displayStyle },
 error: function (XMLHttpRequest, textStatus, errorThrown) {
 alert(errorThrown + XMLHttpRequest.responseText);
 },
 success: function (json) {
 try {
 load_first(json);
 }
 catch (e) { }
 }
 });
 }
 //QueryData();
 </script>
 </body>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jquery $.getJSON()跨域请求
Dec 21 Javascript
非常好用的JsonToString 方法 简单实例
Jul 18 Javascript
在Firefox下js select标签点击无法弹出
Mar 06 Javascript
jQuery插件StickUp实现网页导航置顶
Apr 12 Javascript
JavaScript截取、切割字符串的技巧
Jan 07 Javascript
AngularJS Bootstrap详细介绍及实例代码
Jul 28 Javascript
JavaScript常用代码书写规范的超全面总结
Sep 11 Javascript
jQuery双向列表选择器DIV模拟版
Nov 01 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
详解angular2.x创建项目入门指令
Oct 11 Javascript
pageGroup.js实现分页功能
Jul 27 Javascript
js实现自定义滚动条的示例
Oct 27 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
Apr 10 #Javascript
ES6生成器用法实例分析
Apr 10 #Javascript
基于javascript的异步编程实例详解
Apr 10 #Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 #Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
Apr 10 #Javascript
js实现适配不同的屏幕大小
Apr 10 #Javascript
JS闭包可被利用的常见场景小结
Apr 09 #Javascript
You might like
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
原生js 实现表单验证功能
2021/02/08 Javascript
Python 字典(Dictionary)操作详解
2014/03/11 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
英语专业学生的自我评价
2013/12/30 职场文书
魅力教师事迹材料
2014/01/10 职场文书
美术课外活动总结
2014/07/08 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
用python实现监控视频人数统计
2021/05/21 Python
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP