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 菜单随滚条改为以定位方式(固定要浏览器顶部)
May 24 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
Sep 04 Javascript
有关json_decode乱码及NULL的问题
Oct 13 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
详谈jQuery中的一些正则匹配表达式
Mar 08 Javascript
微信小程序调用PHP后台接口 解析纯html文本
Jun 13 Javascript
vue的事件绑定与方法详解
Aug 16 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
全面解析JavaScript Module模式
Jul 24 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
linux下 C语言对 php 扩展
2008/12/14 PHP
PHP 网页过期时间的控制代码
2009/06/29 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
javascript实现实时输出当前的时间
2015/04/27 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
python str与repr的区别
2013/03/23 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
python:socket传输大文件示例
2017/01/18 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
如何用Python合并lmdb文件
2018/07/02 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
python实现C4.5决策树算法
2018/08/29 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
详解Django admin高级用法
2019/11/06 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
JAVA招聘远程笔试题
2015/07/23 面试题
给医务人员表扬信
2014/01/12 职场文书
后进生转化工作制度
2014/01/17 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
新店开张活动方案
2014/08/24 职场文书
房屋维修协议书范本
2014/09/25 职场文书
加班费申请报告
2015/05/15 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL