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获取元素在浏览器中的绝对位置
Jul 24 Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 Javascript
js 判断上传文件大小及格式代码
Nov 13 Javascript
jQuery中[attribute*=value]选择器用法实例
Dec 31 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
Mar 10 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
Apr 14 Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 Javascript
js实现表单检测及表单提示的方法
Aug 14 Javascript
AngularJS 监听变量变化的实现方法
Oct 09 Javascript
微信小程序中使用 async/await的方法实例分析
May 06 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
Jul 31 Javascript
vue+iview实现手机号分段输入框
Mar 25 Vue.js
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
域名查询代码公布
2006/10/09 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
详解javascript void(0)
2020/07/13 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
举例详解Python中yield生成器的用法
2015/08/05 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
详解Python循环作用域与闭包
2019/03/21 Python
Python2与Python3的区别实例总结
2019/04/17 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
EJB的角色和三个对象
2015/12/31 面试题
酒店司机岗位职责
2013/12/14 职场文书
社会实践心得体会
2014/01/03 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
OpenFeign实现远程调用
2022/08/14 Java/Android