• 定时器管理与函数封装


     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5     <title>无标题文档</title>
     6     <style>
     7         #div1 { width:100px; height:100px; background:red; position:absolute; top:50px; left:30px; }
     8     </style>
     9 </head>
    10 
    11 <body>
    12 
    13 <input id="btn1" type="button" value="往后" />
    14 <input id="btn2" type="button" value="往前" />
    15 <div id="div1"></div>
    16 
    17 <script>
    18     var oBtn1 = document.getElementById('btn1');
    19     var oBtn2 = document.getElementById('btn2');
    20     var oDiv = document.getElementById('div1');
    21 
    22     oBtn1.onclick = function () {
    23         clearInterval( oDiv.timer );
    24         oDiv.timer = setInterval(function () {
    25             var speed = parseInt(getStyle( oDiv, 'left' )) + -12;            // 步长
    26             if ( speed < 10 ) {
    27                 speed = 10;
    28             }
    29             oDiv.style.left = speed + 'px';
    30             if ( speed == 10 ) {
    31                 clearInterval( oDiv.timer );
    32             }
    33         }, 30);
    34     };
    35 
    36     oBtn2.onclick = function () {
    37         clearInterval( oDiv.timer );
    38         oDiv.timer = setInterval(function () {
    39             var speed = parseInt(getStyle( oDiv, 'left' )) + 12;            // 步长
    40             if ( speed > 800 ) {
    41                 speed = 800;
    42             }
    43             oDiv.style.left = speed + 'px';
    44             if ( speed == 800 ) {
    45                 clearInterval( oDiv.timer );
    46             }
    47         }, 30);
    48     };
    49 
    50     function getStyle ( obj, attr ) { return obj.currentStyle?obj.currentStyle[attr] : getComputedStyle( obj )[attr]; }
    51 </script>
    52 
    53 </body>
    54 </html>

    把上面的写成一个方法

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5     <title>无标题文档</title>
     6     <style>
     7         #div1 { width:100px; height:100px; background:red; position:absolute; top:50px; left:30px; }
     8     </style>
     9 </head>
    10 
    11 <body>
    12 
    13 <input id="btn1" type="button" value="往后" />
    14 <input id="btn2" type="button" value="往前" />
    15 <div id="div1"></div>
    16 
    17 <script>
    18     var oBtn1 = document.getElementById('btn1');
    19     var oBtn2 = document.getElementById('btn2');
    20     var oDiv = document.getElementById('div1');
    21 
    22     oBtn1.onclick = function () {
    23         doMove ( oDiv, -12, 10 );
    24 
    25     };
    26 
    27     oBtn2.onclick = function () {
    28         doMove ( oDiv, 12, 800 );
    29     };
    30 
    31     function doMove ( obj, dir, target ) {
    32         clearInterval( obj.timer );
    33 
    34         obj.timer = setInterval(function () {
    35             var speed = parseInt(getStyle( obj, 'left' )) + dir;            // 步长
    36             if ( speed > target && dir > 0 ) {        // 往前跑
    37                 speed = target;
    38             }
    39             if ( speed < target && dir < 0 ) {        // 往后跑
    40                 speed = target;
    41             }
    42             obj.style.left = speed + 'px';
    43             if ( speed == target ) {
    44                 clearInterval( obj.timer );
    45             }
    46 
    47         }, 30);
    48     }
    49 
    50     function getStyle ( obj, attr ) { return obj.currentStyle?obj.currentStyle[attr] : getComputedStyle( obj )[attr]; }
    51 </script>
    52 
    53 </body>
    54 </html>

     对方向进行修改

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5 <title>无标题文档</title>
     6 <style>
     7 #div1 { width:100px; height:100px; background:red; position:absolute; top:50px; left:30px; }
     8 </style>
     9 </head>
    10 
    11 <body>
    12 
    13 <input id="btn1" type="button" value="往上" />
    14 <input id="btn2" type="button" value="往下" />
    15 <div id="div1"></div>
    16 
    17 <script>
    18 var oBtn1 = document.getElementById('btn1');
    19 var oBtn2 = document.getElementById('btn2');
    20 var oDiv = document.getElementById('div1');
    21 
    22 oBtn1.onclick = function () {
    23     
    24     doMove ( oDiv, 'top', 12, 40 );
    25 
    26 };
    27 
    28 oBtn2.onclick = function () {
    29     
    30     doMove ( oDiv, 'top', 12, 500 );
    31     
    32 };
    33 
    34 function doMove ( obj, attr, dir, target ) {
    35     
    36     dir = parseInt(getStyle( obj, attr )) < target ? dir : -dir;
    37     
    38     clearInterval( obj.timer );
    39     
    40     obj.timer = setInterval(function () {
    41         
    42         var speed = parseInt(getStyle( obj, attr )) + dir;            // 步长
    43         
    44         if ( speed > target && dir > 0 ||  speed < target && dir < 0  ) {
    45             speed = target;
    46         }
    47         
    48         obj.style[attr] = speed + 'px';
    49         
    50         if ( speed == target ) {
    51             clearInterval( obj.timer );
    52         }
    53         
    54     }, 30);
    55 }
    56 
    57 function getStyle ( obj, attr ) { return obj.currentStyle?obj.currentStyle[attr] : getComputedStyle( obj )[attr]; }
    58 </script>
    59 
    60 </body>
    61 </html>

     添加回调函数

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5 <title>无标题文档</title>
     6 <style>
     7 #div1 { width:100px; height:100px; background:red; position:absolute; top:50px; left:30px; }
     8 </style>
     9 </head>
    10 
    11 <body>
    12 
    13 <input id="btn1" type="button" value="走" />
    14 <div id="div1"></div>
    15 
    16 <script>
    17 var oBtn1 = document.getElementById('btn1');
    18 var oDiv = document.getElementById('div1');
    19 
    20 oBtn1.onclick = function () {
    21     
    22     // doMove ( oDiv, 'width', 34, 600 );
    23     doMove ( oDiv, 'left', 12, 900, function () {
    24         doMove ( oDiv, 'top', 34, 500 );
    25     });
    26 
    27 };
    28 
    29 function doMove ( obj, attr, dir, target, endFn ) {
    30     
    31     dir = parseInt(getStyle( obj, attr )) < target ? dir : -dir;
    32     
    33     clearInterval( obj.timer );
    34     
    35     obj.timer = setInterval(function () {
    36         
    37         var speed = parseInt(getStyle( obj, attr )) + dir;            // 步长
    38         
    39         if ( speed > target && dir > 0 ||  speed < target && dir < 0  ) {
    40             speed = target;
    41         }
    42         
    43         obj.style[attr] = speed + 'px';
    44         
    45         if ( speed == target ) {
    46             clearInterval( obj.timer );
    47             
    48             /*
    49             if ( endFn ) {
    50                 endFn();
    51             }
    52             */
    53             endFn && endFn();
    54             
    55         }
    56         
    57     }, 30);
    58 }
    59 
    60 function getStyle ( obj, attr ) { return obj.currentStyle?obj.currentStyle[attr] : getComputedStyle( obj )[attr]; }
    61 </script>
    62 
    63 </body>
    64 </html>

    -让一排DIV往下掉.html

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5     <title>无标题文档</title>
     6 
     7     <script src="miaov.js"></script>
     8     <script>
     9         window.onload = function () {
    10             var str = '';
    11             var len = 20;
    12             var aDiv = document.getElementsByTagName('div');
    13             var timer = null;
    14             var num = 0;
    15 
    16             for ( var i=0; i<len; i++ ) {
    17                 str += '<div style="50px; height:50px; background:red; position:absolute; top:0px; left:'+ i*60 +'px;"></div>';
    18             }
    19 
    20             document.body.innerHTML = str;
    21 
    22             document.onclick = function () {
    23                 clearInterval( timer );
    24                 timer = setInterval( function (){
    25                     doMove( aDiv[num], 'top', 23, 500 );
    26                     num ++;
    27                     if ( num === len ) {
    28                         clearInterval( timer );
    29                     }
    30                 }, 100 );
    31             };
    32         };
    33     </script>
    34 
    35 </head>
    36 
    37 <body>
    38 </body>
    39 </html>
  • 相关阅读:
    Nokia Qt SDK开发环境使用
    iPad不久将能使用Android系统
    原生IDE新军:JRuby阵营的RedCar,JavaScript阵营的Cloud9(自己写个IDE出来一定很复杂吧)
    手机产品的信息架构
    百万开发者拥戴!七大.NET著名开源项目
    Prism 4.0发布最终版,支持Windows Phone 7
    Qt Symbian 开发环境安装
    Qt 4.7.1 和 Mobility 1.1.0 已发布
    WSI闭关,这对WS*意味着什么?(个人觉得Web Services是个好东西)
    ERROR: unknown virtual device name解决方法
  • 原文地址:https://www.cnblogs.com/nifengs/p/4958557.html
Copyright © 2020-2023  润新知