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 相关文章推荐
javascript之querySelector和querySelectorAll使用介绍
Dec 20 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
Dec 23 Javascript
JavaScript中的函数重载深入理解
Aug 04 Javascript
javascript中replace( )方法的使用
Apr 24 Javascript
JS随机调用指定函数的方法
Jul 01 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
jQuery获取选中单选按钮radio的值
Dec 27 Javascript
分享bootstrap学习笔记心得(组件及其属性)
Jan 11 Javascript
vue中用H5实现文件上传的方法实例代码
May 27 Javascript
详解vue-cli 构建Vue项目遇到的坑
Aug 30 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
jquery实现吸顶导航效果
Jan 08 jQuery
基于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
php 字符串替换的方法
2012/01/10 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python3 读取Excel表格中的数据
2018/10/16 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
java字符串格式化输出实例讲解
2021/01/06 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
法律顾问服务方案
2014/05/15 职场文书
关于运动会的广播稿
2014/09/22 职场文书
格林童话读书笔记
2015/06/30 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript