day09:定时器

2023-11-12

总结:

1.三种解绑事件

事件源.on事件类型 = null
事件源.removeEventListenner(“没有on的事件类型”,命名函数,false)
事件源.detachEvent(“没有on的事件类型”,命名函数)

2.事件冒泡

一定是盒子嵌套盒子,如果里面的盒子做了点击事件,外面的盒子和里面的盒子有相同的点击事件,外面的盒子也会触发----冒泡
满足条件:盒子嵌套,有相同事件

3.阻止事件冒泡

event.stopPropagation() event可以简写e,默认的事件对象—火狐和谷歌
window.event.cancelBubble = true 给ie低版本浏览器

4.事件委托(事件代理)

通俗一点就是事件冒泡的应用,就是自己的事不想干,叫它爸爸,甚至爷爷、甚至祖先来干。或者拿取快递来比喻都行

有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。

5.事件的三个阶段

1、事件捕获:用数字代表是1(如果你看到了是数字1就是代表了捕获)— 从外到里
2、目标阶段:用数字代表是2(如果你看到了数字2就是目标阶段)—执行当前的元素
3、冒泡阶段:用数字代表是3(如果你看到了数字3就代表的是冒泡阶段)–从里到外

e.eventPhase 为了检测事件的三个阶段分别代表什么数字

一、最大的匿名函数

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        window.onload = function () {
        //最大的匿名函数--也就是我们的入口函数,当页面加载完毕之后再执行里面的代码
        //(当页面加载的时候就是相当于先把body里面的内容都执行完毕了,再执行我们的JS)
            var btn = document.getElementById("btn");
            btn.onclick = function () {
                console.log("大家今天继续给力,优秀,棒棒哒.");
            }
        }
    </script>
</head>

<body>
    <input type="button" value="按钮" id="btn">
</body>

</html>

二、定时器setInterval

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="button" value="清除定时器" id="btn">
    <script>
        /* 
        定时器:炸弹,闹钟(炸弹只炸一次)
        我们的定时器有两种:setInterval 和 setTimeout
        setInterval 使用场景轮播图效果  原子弹--不停的炸,--不停的执行下去,如果这个定时器不清除,他会一直执行。
        setTimeout -----  会用在一次性的广告里面--现在很少见---炸弹

        第一、setInterval(匿名函数,时间)
        参数1:是一个匿名函数
        参数2:时间 单位是毫秒 1000毫秒--- 1秒  千分之一为单位
        */
       var timeId = setInterval(function(){
           alert("嘎嘎,来点我呀");
       },2000);//2000代表2秒 就是2s

      //清除定时器
      var btn = document.getElementById("btn");
      //点击按钮来清除定时器
      btn.onclick = function(){
        //   window.clearInterval(timeId); 我们把前面的定时器给了timeId
        // 扩展--工作里面推荐下面写法
        clearInterval(timeId);
        // 总结:清除定时器 window 是可以省略的,这个定时器是我们用的最多的
      }
    
    </script>
</body>
</html>

三、一起摇摆案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            position: absolute;
            /* 运动起来一定要有定位 */
        }
        img{
            width: 200px;
            height: 200px;
        }
    </style>
</head>
<body>
    <input type="button" value="一起摇摆" id="btn1">
    <input type="button" value="停止摇摆" id="btn2">
    <div id="dv">
        <img src="images/1.jpg" alt="">
        <img src="images/2.jpg" alt="">
    </div>
    <script src="publick.js"></script>
    <script>
        var timeId = "";//全局变量
        my$("btn1").onclick = function(){
            timeId = setInterval(function(){
                // 定义一个随机数
                var x = parseInt(Math.random() *100 + 1);
                var y = parseInt(Math.random() *100 + 1);
                // 设置元素的left属性和top属性
                my$("dv").style.left = x + "px";
                my$("dv").style.top = y + "px";
            },10);//时间越小越快
        };

        // 停止定时器,清除定时器
        my$("btn2").onclick = function(){
            clearInterval(timeId);
        }

        // 现在不要去点击多次,点击多次会有bug的-----我们后面详细画图来讲解如何解决这个bug--轮播图的时候。
    </script>
</body>
</html>

四、亮起来案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 600px;
            height: 600px;
            border: 1px solid #000;
            background: black;
            position: relative;/*相对定位*/
        }
        span{
            position: absolute;/*绝对定位*/
            font-size: 50px;
            color:yellow
        }
    </style>
</head>
<body>
    <input type="button" value="亮起来" id="btn">
    <div id="dv"></div>
    <script src="publick.js"></script>
    <script>
        my$("btn").onclick = function(){
            // 因为我们这个定时器没有做清除,所以没有给变量接收
            setInterval(function(){
                my$("dv").innerHTML = "<span>☆</span>";
                // 随机数
                var x = parseInt(Math.random() * 600 + 1);
                var y = parseInt(Math.random() * 600 + 1);
                my$("dv").firstElementChild.style.left = x + "px";
                my$("dv").firstElementChild.style.top = y + "px";
            },5);
        }
    </script>
</body>
</html>

五、美女时钟效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="" alt="" id="im">
    <script src="publick.js"></script>
    <script>
        setInterval(function(){
            // 获取系统的日期时间
            var dt = new Date();
            // console.log(dt);
            // 获取小时
            var hour = dt.getHours();
            // 获取秒钟
            var second = dt.getSeconds();
            // 判断长度----三元运算符
            hour = hour < 10 ? "0" + hour : hour;

            second = second < 10 ?"0" + second : second;
            console.log(hour + "======" + second);//测试代码
            // 大招 "++" 
             my$("im").src = "meimei/"+hour+"_"+second+".jpg";
        },1000);//1000毫秒就是等于1秒  1s
    </script>
</body>
</html>

六、进一步优化时钟

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="" alt="" id="im">
    <script src="publick.js"></script>
    <script>
        function f1(){
            // 获取系统的日期时间
            var dt = new Date();
            // console.log(dt);
            // 获取小时
            var hour = dt.getHours();
            // 获取秒钟
            var second = dt.getSeconds();
            // 判断长度----三元运算符
            hour = hour < 10 ? "0" + hour : hour;

            second = second < 10 ?"0" + second : second;
            console.log(hour + "======" + second);//测试代码
            // 大招 "++" 
             my$("im").src = "meimei/"+hour+"_"+second+".jpg";
        }
        f1();// 上来就调用一次函数,--核心思想
        setInterval(f1,1000);//1000毫秒就是等于1秒  1s
        //总结:我们的定时器里面可以是匿名函数,也可以是命名函数。
    </script>
</body>
</html>

七、渐变效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 300px;
            height: 300px;
            background: pink;
        }
    </style>
</head>
<body>
    <input type="button" value="渐变" id="btn">
    <div id="dv"></div>
    <script src="publick.js"></script>
    <script>
         var opacity = 10;//为了避免小数出现bug,我们给个10
         my$("btn").onclick = function(){
             var timeId = setInterval(function(){
                 opacity--;
                //判断不要出现负数
                if(opacity <= 0){
                    // 清除定时器
                    clearInterval(timeId);
                }
                my$("dv").style.opacity = opacity / 10;//因为我们前面给了一个10
             },200);
         }
    </script>
</body>
</html>

八、定时器之setTimeout

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
        我们的定时器有两种:setInterval(函数,时间)----轮播图
        我们的setTimeout(函数,时间)---- 只执行一次,--弹出广告,到了时间就执行一次
        setTimeout(函数,时间)
        参数1:函数
        参数2:时间 单位是毫秒 1000毫秒等于1秒 1s
        */
        window.onload = function(){
            var timeId = setTimeout(function(){
                alert("我只弹出一次");//就算你是弹出一次,我们要清除定时器---我们程序员约定--规范
            },1000);
            
            my$("btn").onclick = function(){
                clearTimeout(timeId);//定时器清除的----这样可以节省内容
                console.log("成功清除");//测试是否成功清除
            }
        }

        // 大总结:不管是哪个定时器setInterval()和setTimeout 都要清除定时器--规范--规定。
    </script>
    <input type="button" value="清除定时器" id="btn">
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

day09:定时器 的相关文章

  • nodejs:process.stdout.write 的短别名

    我正在学习nodejs 而且我喜欢它 我试图弄清楚如何使用更短的别名console log我发现我可以使用var cout console log并使用cout string 从那时起 然后当我想使用process stdout write
  • JavaScript Array.length 属性是函数还是简单变量?

    我有以下 JavaScript 代码 我已经使用 new 关键字初始化了一个数组 因此创建了该数组对象的一个 新实例 然后 我通过向数组添加元素来填充该数组 然而我认为我犯了一个根本性的误解 代码的下一部分让我非常困惑 如果它不够清楚或者完
  • 谷歌脚本循环性能

    我是 google 脚本的新手 我不确定为什么与 Excel VBA 的简单循环相比 我的性能如此差 我附上了下面的代码 它是一个大约 1200 行的循环 每秒删除大约 2 3 行 我写的脚本效率很低吗 我还不熟悉 Javascript 但
  • 为什么这个 JavaScript 可以在 Safari 上运行,但不能在 Firefox 上运行?

    我有 HTML 文件 我在 Safari 上尝试了该代码 运行良好 但是当我在 Firefox 上尝试这个时 它不起作用 任何人都可以建议如何使其在 Firefox 上工作吗 单击撤消按钮时 我想从 jsp 文件中检索内容 当我在 mac
  • jQuery show() 和 hide() 的更流畅替代方案

    我有一个带有隐藏列的页面设置 使用 jQuery show 和 hide 函数将列滑入和滑出 然而 它有点 笨重 并且在显示 隐藏时看起来不太流畅 相比之下 我还有一个使用 jquery UI 手风琴的页面部分 当在这些部分之间切换时 过渡
  • 如何清除画布元素中的多边形区域?

    我使用过clearRect函数 但没有看到多边形的等效函数 我天真地尝试过 ctx fillStyle transparent ctx beginPath ctx moveTo 0 0 ctx lineTo 100 50 ctx lineT
  • Karma + JSPM + Typescript - 未找到“.ts.js”

    主要只是想让 Karma JSPM 在加载 ts 文件时发挥良好作用 但绝对没有运气 我看到一个讨论库 https github com Larchy karma jspm typescript coverage tree master一个
  • 代理递归函数

    想象一个简单的递归函数 我们试图包装它以检测输入和输出 A simple recursive function const count n gt n 1 count n 1 Wrap a function in a proxy to ins
  • CKEDITOR.styleSet.add - 'a' 元素的新样式

    由于某种原因如果我改变 p to a 它不再出现在样式列表中 有什么理由吗 CKEDITOR stylesSet add default name Wys wiersza 1 element p styles line height 18p
  • 名称属性的 CSS 选择器?

    这可能是一个愚蠢的问题 但是属性的 CSS 选择器是什么 a 那是 名字 document body innerHTML myString anchor HTML String 这段 JavaScript 创建了一个 a 带有名称的元素 H
  • 类型错误:require.config 不是一个函数

    我正在使用 require js 作为早午餐项目的一部分 这段代码抛出错误 require config require config is not a function paths jquery lib jquery underscore
  • Jasmine 单元测试不等待承诺解析

    我有一个有角度的服务 它具有像这样的异步依赖项 function angular module app factory myService q asyncService function q asyncService var myData
  • 扩展html表格突出显示行和列并使当前单元格具有不同的颜色

    我找到了用鼠标悬停时突出显示行和列的示例 https stackoverflow com a 28312853 139698 https stackoverflow com a 28312853 139698 如何使鼠标悬停的一个单元格变为
  • 特别更改画布上的笔画不透明度,但不更改颜色

    我有一个漂亮整洁的脚本 可以循环显示颜色 并且与 xxxxxx格式 但我想改变透明度 有没有办法做到这一点 我指的是ctx strokeStyle 这是当前的代码 canvas strokeStyle 16777215 s length i
  • Meteor JS:存储特定模板实例状态的最佳方法是什么?

    我正在学习 Meteor JS 中的会话和反应式数据源 它们非常适合设置全局 UI 状态 但是 我不知道如何将它们的范围限制到模板的特定实例 这就是我想做的 我的页面上有多个可内容编辑的元素 每个下面都有一个 编辑 按钮 当用户单击 编辑
  • 谷歌绘制具有相同比例的多个系列的图表

    我正在寻找一种在图形上显示多个系列的方法 这些系列具有相同的比例但仅显示一次 正如你在这里看到的 http jsfiddle net Youkoal d3xwnqdu http jsfiddle net Youkoal d3xwnqdu 我
  • Electron 应用程序中的 NEDB 持久化

    我正在尝试从电子应用程序连接到 nedb CRUD 操作效果很好 但我没有看到 db 文件 D my db 检查隐藏文件 文件存在于某个地方 因为即使在机器重新启动后它也会保留数据 我怀疑电子威胁着我的相对路径 但我可以在任何地方找到它 v
  • 跨浏览器相当于explicitOriginalTarget事件参数

    有谁知道跨浏览器等价于explicitOriginalTarget事件参数 该参数是 Mozilla 特定的 它为我提供了导致模糊的元素 假设我的页面上有一个文本输入和一个链接 文本输入具有焦点 如果我点击链接 文本输入的模糊事件会通过ex
  • 如何在输入时格式化 contenteditable div?

    我正在尝试编写一个函数 允许 contenteditable div 在用户输入 div 时执行一些自动格式化 到目前为止我只能让它在 IE 中运行 有人可以帮助我吗 function formatOnKeyUp if window get
  • 表单帖子上的 asp.net mvc 编码

    我在我的 asp net mvc 表单 带有文本区域的 nicedit 中使用富文本编辑器 当我在帖子上提交表单时 因为它不是 html 编码的 我收到以下消息 从客户端检测到潜在危险的 Request Form 值 如何对 post 上的

随机推荐

  • k8s学习(四) k8s使用nodeport方式配置service对外暴露服务

    Pod是有生命周期的 使用凡人皆有一死来描述pod很贴切 当一个工作节点 node 销毁时 节点上运行的pods也会被销毁 ReplicationController会动态地在其他节点上创建Pod来保持应用程序的运行 每一个Pod都有一个独
  • IDEA的作用

    IDEA IntelliJ IDEA 是一款由 JetBrains 开发的 Java 集成开发环境 IDE 它不仅支持 Java 开发 还支持多种其他编程语言和框架 包括 Kotlin Scala Groovy Android Spring
  • 【Linux运维】Ubuntu Server的无密码开机自动登录

    需求 最近我们在开发一个基于树莓派的小盒子 我们会采购一些树莓派 装好外盒 装好arm版本的 Ubuntu Server 20 04 系统 并且装上我们开发的配套软件 对接我们云端的服务 最终把小盒子卖给用户并提供一些收费的服务 我们在安装
  • ORACLE如何实现行转列

    可通过正则截取实现 例如下图 将 1 2 字符串通过 截取 分为两行数据 Select Regexp Substr 1 2 1 Level As SKU From Dual Connect By Regexp Substr 1 2 1 Le
  • 2022年安全员-C证操作证考试题库及在线模拟考试

    题库来源 安全生产模拟考试一点通公众号小程序 2022安全员 C证理论题库系安全员 C证全部考试题库上机考试练习题 2022年安全员 C证操作证考试题库及在线模拟考试根据安全员 C证最新教材汇编 安全员 C证考试模拟题随时根据安全生产模拟考
  • 一、robotframework 安装

    测试环境 windows 安装前提 已安装python robotframework基于python环境 python安装过程略过 安装的软件参考的这篇博文robot framework自动化测试参考手册 安装python库 安装robot
  • Linux下静态库生成和使用

    一 静态库概念 1 库是预编译的目标文件 object files 的集合 它们可以被链接进程序 静态库以后缀为 a 的特殊的存档 archive file 存储 2 标准系统库可在目录 usr lib与 lib中找到 比如 在类Unix系
  • layui原生框架下,展示、替换图片(修改页面)

    最终页面效果如下 由于图片没有资源路径 所以没有展示出来 图片展示可以忽略 代码如下 div class layui form item div
  • JDK的安装及配置详细图文教程(win10)

    JDK的下载 进入官网 选择Products下的Software下的java 官网 下拉 找到java SE页面并选择Oracle JDK 进入后选择JDK Download 然后就会进入到jdk最新版本的下载界面 选择系统对应的下载安装包
  • Linux创建用户并修改shell类型

    base root 57beff3260ef sudo su test exit base root 57beff3260ef apt get install zsh base root 57beff3260ef echo SHELL bi
  • react html 显示,react如何控制元素的显示与隐藏功能?

    react如何控制元素显示与隐藏 在vue中常用v if和v show指令 react中用什么方法呢 下面本篇文章给大家介绍一下 有一定的参考价值 有需要的朋友可以参考一下 希望对大家有所帮助 下面说我知道的三种方法 1 通过 state
  • Python3内置模块

    1 os all functions from posix nt or ce e g unlink stat etc os name is either posix nt or ce os curdir is a string repres
  • jvm不同版本(jdk6、jdk7、jdk8)之间的class常量池、运行时常量池、字符串常量池与堆、方法区的种种关系

    这几天研究了一下JVM底层原理 其中的内存分配前前后后看了三天 感觉还是没太看透 先研究到这 做个阶段性的笔记 感兴趣的小伙伴们欢迎大家评论区共同讨论 查阅了各种博客 长篇大论 例证太多 不清晰 本文主要目的精简浓缩一下 感兴趣的去文中参考
  • 数据库报错1264错误

    数据库报错1264 php程序报错1264 这个原因有可能是字段长度不够 改变一下字段长度
  • Install Ubuntu 12.04 on Macbook pro Retina

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 Install rEFIt Download and mount the rEFIt 0 14 dmg disk image Double click on the r
  • log4j 2读取配置文件的三种方法

    log4j 2读取配置文件的三种方法 log4j 2读取的配置文件可以分为三类 src下的配置文件 绝对路径的配置文件 相对路径的配置文件 我们一一给例子 直接看代码 package com herman test import java
  • 【Linux之Shell脚本实战】查询邮政编码与对应地区

    Linux之Shell脚本实战 查询邮政编码与对应地区 一 脚本要求 二 检查本地系统环境 1 检查系统版本 2 检查系统内核版本 三 配置脚本注释模板 1 编辑 vimrc 文件 2 检查模板生效情况 四 编辑shell脚本 1 创建脚本
  • 「数据结构」三步搞定表达式中缀转后缀 手算法 通俗易懂 C语言

    表达式中缀转后缀 举个例子 一个式子 5 20 1 3 14 如何把该式子转换成后缀表达式呢 其实就是分三步 按运算符优先级对所有运算符和它的运算数加括号 原本有括号的不用加 把运算符移到对应的括号后 去掉括号 对应的具体实现为 5 20
  • 音视频开发系列-音视频核心知识精讲

    音视频开发系列 音视频核心知识精讲 1 视频为什么会花屏 2 音频为什么容易有杂音 3 音视频进阶需要掌握什么项目 音视频核心知识 为什么会花屏 容易有杂音 进阶需要掌握什么项目 https www bilibili com video B
  • day09:定时器

    目录 总结 1 三种解绑事件 2 事件冒泡 3 阻止事件冒泡 4 事件委托 事件代理 5 事件的三个阶段 一 最大的匿名函数 二 定时器setInterval 三 一起摇摆案例 四 亮起来案例 五 美女时钟效果 六 进一步优化时钟 七 渐变