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 相关文章推荐
分享我对JS插件开发的一些感想和心得
Feb 04 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
Jun 29 Javascript
AngularJS bootstrap启动详解及实例代码
Sep 14 Javascript
H5实现中奖记录逐行滚动切换效果
Mar 13 Javascript
微信小程序中显示html格式内容的方法
Apr 25 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
May 09 Javascript
微信小程序与php 实现微信支付的简单实例
Jun 23 Javascript
分析JavaScript数组操作难点
Dec 18 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
vue引入axios同源跨域问题
Sep 27 Javascript
浅入深出Vue之自动化路由
Aug 06 Javascript
Vant picker 多级联动操作
Nov 02 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
第七节 类的静态成员 [7]
2006/10/09 PHP
提高网站信任度的技巧
2008/10/17 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
J2EE相关知识面试题
2013/08/26 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
三下乡活动方案
2014/01/31 职场文书
《观舞记》教学反思
2014/04/16 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
师范生见习报告
2014/10/31 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
党支部对转正的意见
2015/06/02 职场文书
三国演义读书笔记
2015/06/25 职场文书
田径运动会广播稿
2015/08/19 职场文书
聘任书格式及范文
2015/09/21 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js