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 相关文章推荐
JavaScript 学习笔记(十五)
Jan 28 Javascript
JavaScript中的立即执行函数表达式介绍
Mar 15 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
Bootstarp风格的toggle效果分享
Feb 23 Javascript
微信小程序 自己制作小组件实例详解
Dec 22 Javascript
关于vue.extend和vue.component的区别浅析
Aug 16 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
Aug 20 Javascript
微信小程序自定义tabBar组件开发详解
Sep 24 Javascript
JS闭包经典实例详解
Dec 20 Javascript
jQuery 选择器用法基础入门示例
Jan 04 jQuery
jQuery实现动态加载瀑布流
Sep 01 jQuery
React Hook用法示例详解(6个常见hook)
Apr 28 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
收音机的保养
2021/03/01 无线电
php一些公用函数的集合
2008/03/27 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
python实现简单爬虫功能的示例
2016/10/24 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
transform python环境快速配置方法
2018/09/27 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
全神贯注教学反思
2014/02/03 职场文书
总经理岗位职责描述
2014/02/08 职场文书
门面房租房协议书
2014/08/20 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
小学生节水倡议书
2015/04/29 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL