JavaScript实现的DOM绘制柱状图效果示例


Posted in Javascript onAugust 08, 2018

本文实例讲述了JavaScript实现的DOM绘制柱状图效果。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>3water.com JavaScript DOM绘制柱状图</title>
    <style>
      #chart-wrap{ 
        width:910px; 
        height:240px;
        border:solid 1px #B3B3DC;
        position:relative; 
        top:40px; 
        left:20px;
      } 
    </style>
  </head>
  <body>
    <div id="chart-wrap"></div>
    <script>
      function renderChart(data) {
        var cw = document.getElementById("chart-wrap"); 
        cw.innerHTML = ""; 
        var max = 0; 
        for (var index in data) {
          if (data[index] > max)
            max = data[index];
        }
        var percent = 180 / max; 
        var i = 0;
        for (var index in data) { 
          var bar = document.createElement("div"); 
          bar.id = index + "_" + data[index]; 
          bar.style.height = Math.round(percent * data[index]) + "px"; 
          bar.style.width = "40px";
          bar.style.left = (i * 40) + 165 + "px"; 
          bar.style.marginLeft = (i * 20) + "px"; 
          bar.style.position = "absolute"; 
          bar.style.background = "none repeat scroll 0 0 pink";
          bar.style.overflow = "hidden";
          bar.setAttribute("title", index + ":" + data[index]);
          bar.style.display = "block"; 
          bar.style.top = 200 - Math.round(percent * data[index]) + "px"; 
          cw.appendChild(bar); 
          var axis = document.createElement("div"); 
          axis.id = "axis_" + i; 
          axis.style.width = "40px"; 
          axis.style.left = (i * 40) + 165 + "px"; 
          axis.style.marginLeft = (i * 20) + "px";
          axis.style.textAlign = "center"; 
          axis.style.position = "absolute"; 
          axis.style.top = "205px"; 
          axis.innerHTML = '<span style="font-size:12px; color:grey;"> ' + i + '</span>'; 
          cw.appendChild(axis); 
          i++;
        }   
        for (var i = 0; i < 5; i++) { 
          var ayis = document.createElement("div"); 
          ayis.style.width = "30px"; 
          ayis.style.position = "absolute"; 
          ayis.style.top = (36 * i) + (20 - 6) + "px"; 
          ayis.style.left = "140px"; 
          ayis.innerHTML = '<span style="font-size:12px; color:grey;"> ' + Math.round(max - (max / 5) * i) + '</span>'; 
          cw.appendChild(ayis); 
          var line = document.createElement("div"); 
          line.setAttribute("style", "width:580px; left:165px; border-top:1px dotted grey; height:1px; line-height:1px; display:block; overflow:hidden; position:absolute; "); 
          line.style.top = (36 * i) + 20 + "px"; 
          cw.appendChild(line); 
        } 
      }
      var data = [10,60,50,30,40,80,20,70,100,90];
      renderChart(data);
    </script>
  </body>
</html>

运行效果如下:

JavaScript实现的DOM绘制柱状图效果示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
List all the Databases on a SQL Server
Jun 21 Javascript
Javascript Select操作大集合
May 26 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
解析JSON对象与字符串之间的相互转换
Dec 18 Javascript
防止按钮在短时间内被多次点击的方法
Mar 10 Javascript
对js eval()函数的一些见解
Aug 15 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
快速入门Vue
Dec 19 Javascript
canvas实现图像布局填充功能
Feb 06 Javascript
vue-cli+webpack项目 修改项目名称的方法
Feb 28 Javascript
微信小程序扫描二维码获取信息实例详解
May 07 Javascript
微信小程序云开发之新手环境配置
May 16 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
Aug 07 #Javascript
快速解决处理后台返回json数据格式的问题
Aug 07 #Javascript
详解如何在vue-cli中使用vuex
Aug 07 #Javascript
React styled-components设置组件属性的方法
Aug 07 #Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 #Javascript
详解vue axios用post提交的数据格式
Aug 07 #Javascript
解决koa2 ctx.render is not a function报错问题
Aug 07 #Javascript
You might like
常用星际术语索引(新手指南)
2020/03/04 星际争霸
codeigniter中测试通过的分页类示例
2014/04/17 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
JS作用域链详解
2017/06/26 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
python检测服务器端口代码实例
2019/08/31 Python
本科毕业生专业自荐书范文
2014/02/05 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
买房协议书
2014/04/11 职场文书
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python