JavaSprict基础4

定时器的认识

  • 定时器:就是可以不断地自动的重复某一个操作的东西。
  • 定时的分类:
    • 1.多次定时器:setInterval()
    • 2.一次定时器:setTimeout()
    • 第一个参数:表示执行的操作,一般就是事件指令
    • 第二个参数表示间隔的时间,但是注意这个时间是毫秒 1s = 1000ms;
  • 定时器的特点:
    对于一般的变量以及函数当使用完成后,系统会自动回收对应的内存,但是定时器当使用完成后系统不会自动回收对应的内存,所以我们需要手动回收。
  • 清空定时器:clearTimeout()
    因为清空定时器的时候,我们不知道是哪一个,但是一个页面中可能有多个定时器,所以我们一般在设置定时器的时候,给定时器制定名称,清空的时候直接清空对应名称的定时器就可以。

定时器的匀速动画

  • 动画原理:就是让实现动画的标签距离某个方向的位置不断地变化,可以通过多次定时器实现不断地变化
  window.onload = function () {
 1.1获取标签
        var btn = document.getElementById('btn');
        var box = document.getElementById('box');
        
        var timer = null;
//        var begin = 0;//用来记录距离左边的间距
//        var target = 800;//用来记录动画的目标值
2.点击按钮
        btn.onclick = function () {
2.3调用下面抽取的匀速动画
            constant(0,40,800);
        }
抽取匀速动画
        function constant(begin,speed,target) {
定时器会叠加,如果我们上次没有清空,当点击按钮的时候,会再次创建一个新的定时器和原来的定时器叠加所以会越来越快,所以我们需要在点击的时候,清空上一次定时器
            clearInterval(timer);
2.1实现动画,使用定时器
            timer = setInterval(function () {
                begin += speed;
2.11判断终止值
                if(begin >= target){
                    clearInterval(timer);
                    begin = target;
                }
2.2设置距离左边的间距
                box.style.left = begin + 'px';
            },10)
        }
    }

定时器的减速动画

 window.onload = function () {
1.获取标签
        var box = document.getElementById('box');
        var btn = document.getElementById('btn');
        var timer = null;
        var begin = 0;//用来记录距离左边的间距
        var target = 800;//用来记录动画的目标值
2.点击按钮
        btn.onclick = function () {
2.1清空定时器
            clearInterval(timer);
            timer = setInterval(function () {
 //ceil:向上取整,如果是1.1,取出来的是2
//计算出速度
                var speed = Math.ceil((target - begin)*0.2);
 //我们的速度需要向上取整
                begin += speed;
                if (begin >= target){
                    clearInterval(timer);
                    begin = target;
                }
2.2设置距离
                box.style.left = begin + 'px';
            },100)
        }
    }

一次定时器执行多次操作

 window.onload  = function () {
        // 就是使用一次定时器执行多次操作
        var timer = null;
        var count = 5;//用来记录秒数
        var box = document.getElementById('box')
        timer = setTimeout(jumpPage,1000);
        //用来执行定时器的操作的函数
        function jumpPage() {
            clearInterval(timer);
            box.innerHTML = '要在'+count+'秒后跳转'
            count --;
            if(count >= 0){
                timer = setInterval(arguments.callee,1000);
                //函数中调用函数自己,叫做递归函数
                //arguments.callee:相当自己本身。

            }else {//小于0,跳转,清空最后一次定时器
                window.location.href = 'http://baidu.com';
                clearInterval(timer);
            }
        }
    }
随机数
  • Math.random():可以随机生成一个大于等于0但是需要小于1的数字,不能等于1

使用Js设置值

  • 获取box的样式
  • 如果直接设置我们获取的是行内样式的值,但是有时候我们需要获取在页内设置的值。
  • 在不同的浏览器使用不同的方法获取:
  • 如果是ie或者opera:
  • 如果是普通的浏览器:
  • 综合写法一般是:
function getCssAttr(obj,attr) {
          if(obj.currentStyle){
              return obj.currentStyle[attr];
          }else {
              return window.getComputedStyle(obj,null)[attr];
          }
      }
   如果当我们使用.语法访问不到值,我们可以采用[]来访问.
        alert(getCssAttr(box,'width'));
    }

简单的无限轮播

  window.onload = function () {
        //1.获取标签
        var oul = document.getElementById('oul');
        //2.设置距离左边的间距不断变化,需要时定时器
        var timer = null;
        var begin = 0;//设置距离左边的间距
        timer = setInterval(setLeft,20);
        function  setLeft() {
            begin -= 4;
            if(begin <= -1200){
                begin = 0;
            }
            oul.style.left = begin + 'px';
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,046评论 1 10
  • 基础复习笔记 JS效果三要素: 时间 事件 运动轨迹(分步骤来实现先死后活法逐步来) (1)获取元素 : getE...
    2e9a10d418ab阅读 375评论 0 3
  • 01-获取孩子节点 childNodes 获取的包括文本 nodeType 为1是标签 为2是属性 为3是文本 ...
    LIT乐言阅读 147评论 0 1
  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,031评论 0 7
  • 定义 js中内置的一个方法,每隔一段时间或者延迟一段时间去执行一段指定的代码 分类 重复执行定时器 setInte...
    素弥阅读 747评论 0 0