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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
来自国外的页面JavaScript文件优化
Dec 08 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
Nov 22 Javascript
利用javascript数组长度循环数组内所有元素
Dec 27 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
Dec 10 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
Dec 18 Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
Apr 17 Javascript
JavaScript实现星级评价效果
May 17 Javascript
JavaScript使用prototype属性实现继承操作示例
May 22 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 高手之路(二)
2006/10/09 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
Python操作串口的方法
2015/06/17 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
用Python设计一个经典小游戏
2017/05/15 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
Django框架models使用group by详解
2020/03/11 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
党员公开承诺书范文
2014/03/25 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
借款协议书范本
2014/04/22 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
学术会议领导致辞
2015/07/29 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python