zoukankan      html  css  js  c++  java
  • 进度条

    var ProgressBar = function (divObj,innerClass,outerClass,time) {
    
        var _self = this;
    
        //缓存宽度,以及内联Div
        var _outerWidth,_innerDiv;
    
        //div容器
        _self._divObj = divObj;
        //内围divClass
        _self._innerClass = innerClass;
        //外围DivClass
        _self._outerClass = outerClass;
        //总时间
        _self._time = time;
    
        //设置内围Class
        _self.SetInnerClass = function (innerClass) {
            _self._innerClass = innerClass;  
        }
    
        //完成时回调
        _self.completed = function (callback) {
            if (typeof callback == 'function') {
                _self._completed = callback;
            } else {
                throw new Error('callback must be a function type');
            }
        }
    
        //间隔执行函数,每个interval回调一次
        _self.intervalFn = function (interval, callback) {
            if (typeof interval == 'number' && typeof callback == 'function') {
                if (interval % 10 == 0) {
                    _self._intervalFn = callback;
                    _self._interval = interval;
                } else {
                    throw new Error('interval must be divied with no remainder 10');
                }
            } else {
                throw new Error('callback must be a function type and the interval must be a Number type');
            }
        }
    
        if (typeof ProgressBar._initialized == 'undefined') {
            
            //绘制div
            ProgressBar.prototype._html = function () {
                var html = [];
                html.push('<div class="');
                html.push(_self._outerClass);
                html.push('"><div class="');
                html.push(_self._innerClass);
                html.push('"> </div><div/>');
                return html.join('');
            }
    
            //初始化
            ProgressBar.prototype.init = function () {
                _self._divObj.append(_self._html());
                _outerWidth = _self._divObj.find('div.' + _self._outerClass).width();
                _innerDiv = _self._divObj.find('div.' + _self._innerClass);
            }
    
            //重置
            ProgressBar.prototype.reset = function () {
                _innerDiv.css('width', 0);
            }
    
            //执行间隔回调
            ProgressBar.prototype._evalIntervalFn = function (curTime) {
                if (typeof _self._intervalFn != 'undefined') {
                    if (curTime % _self._interval == 0) {
                        _self._intervalFn(curTime);
                    }
                }
            }
           
            //运行
            ProgressBar.prototype.run = function () {
                if (typeof _outerWidth == 'undefined') {
                    _self.init();
                }
                var evalRate = 10;//执行频率
                var speed = _outerWidth / _self._time * evalRate;
                var width = 0;
                var curTime = 0;
                var interval = window.setInterval(function () {
                    width = width + speed;
                    //执行间隔回调
                    curTime += evalRate;
                    _self._evalIntervalFn(curTime);
                    if (width < _outerWidth) {
                        _innerDiv.css('width', width);
                    } else if(width>=_outerWidth){
                        _innerDiv.css('width', _outerWidth);
                        //完成回调
                        if (typeof _self._completed != 'undefined') {
                            _self._completed();
                        }
                        clearInterval(interval);
                    }
                }, evalRate);
            }
    
            ProgressBar._initialized = true;
        }
    }
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <script src="jquery-1.7.2.min.js"></script>
        <script src="ProgressBar.js"></script>
    
        <style type="text/css">
            .innerClass {
                background-color:red;
                0px;
                height:20px;
            }
            .outerClass {
                height:20px;
                513px;
                border:1px solid blue;
                background-color:blue;
            }
    
        </style>
        <script type="text/javascript">
            $(function () {
                var progress = new ProgressBar($("#test"), 'innerClass', 'outerClass', 5000);
                progress.run();
                progress.completed(function () {
                    alert('已完成');
                });
                progress.intervalFn(990, function (curTime) {
                    console.log(curTime);
                });
            });
    
        </script>
    </head>
    <body>
        <div id="test"></div><span id="test1"></span>
    </body>
    </html>
  • 相关阅读:
    用dos批处理程序检测是否安装.netframework,并自动安装后运行指定程序(.net自启动光盘的制做)
    生成pdf文件的好东西,itextsharp
    阳春三月来了
    新年快乐!
    无法启动 MS DTC 事务管理器。LogInit 返回错误 0x2. 怎么办?
    如何获取文件在系统中的图标?
    自定义工作流程的实现方案(初稿)
    [正能量系列]女性程序员篇
    [正能量系列]失业的程序员(一)
    我们在囧途之裁员篇
  • 原文地址:https://www.cnblogs.com/JerryWang1991/p/3265545.html
Copyright © 2011-2022 走看看