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 相关文章推荐
js字符编码函数区别分析
Jun 05 Javascript
JavaScript 事件的一些重要说明
Oct 25 Javascript
Javascript 中的类和闭包
Jan 08 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
模拟多级复选框效果的jquery代码
Aug 13 Javascript
B/S模式项目中常用的javascript汇总
Dec 17 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
Sep 25 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
Jun 09 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
Jun 11 Javascript
JS图片轮播与索引变色功能实例详解
Jul 06 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
基于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 会话(session 时间设定)使用入门代码
2008/06/05 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
初识PHP中的Swoole
2016/04/05 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
js jquery数组介绍
2012/07/15 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
python实现一组典型数据格式转换
2018/12/15 Python
python打造爬虫代理池过程解析
2019/08/15 Python
python3使用GUI统计代码量
2019/09/18 Python
python如何使用代码运行助手
2020/07/03 Python
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
大学生求职简历的自我评价
2013/10/14 职场文书
后勤部长岗位职责
2013/12/14 职场文书
会计电算化专业毕业生自荐信
2013/12/20 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
村级换届选举方案
2014/05/10 职场文书
研究生个人学年总结
2015/02/14 职场文书
网络妈妈观后感
2015/06/08 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript