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:定时器 的相关文章

  • createHTMLNotification() 替换

    我创建了一个 Chrome 扩展程序 其中使用createHTMLNotification 在所有内容之上显示一个窗口 然而 从 Chrome 28 开始 谷歌决定放弃createHTMLNotification 完全 为什么 谷歌 为什么
  • Angular UI 模式的范围问题

    我无法理解 使用角度 UI 模式的范围 虽然这里不是很明显 但我已经正确设置了模块和所有内容 据我所知 但这些代码示例尤其是我发现错误的地方 index html 其中重要部分 div class btn group div
  • 如何删除除任何特定 id 之外的元素

    假设有一个父 id 其中包含许多元素 我想删除除一个元素之外的所有元素 ex parent id children not id n remove
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 从函数返回函数的目的是什么?

    阅读一些遗留代码 发现 A prototype setSize function var v1 new Vector2 return function size var halfSize v1 copy size multiplyScala
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • nodejs (libuv) 事件循环是否在一个阶段(队列)中执行所有回调,然后再进入下一阶段或以循环方式运行?

    我正在研究 Node js 中 libuv 提供的事件循环 我遇到了关注 Deepal Jayasekara 的博客 https blog insiderattack net event loop and the big picture n
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • 使用 Google 日历源时如何禁用 FullCalendar 中的活动链接?

    我正在使用 FullCalendar 库从 Google 日历加载日历中的事件 不幸的是 事件添加到日历后 它们是可点击的 当您点击该活动时 您会自动重定向到 Google 日历页面以查看该特定活动 或者如果您有足够的访问权限 则可以直接对
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • Google Maps API (v3) 添加/更新标记

    编辑 它现在可以工作 但如果用户不允许或没有基于位置的服务 则不会加载 请参阅 jsfiddle 示例接受的答案评论 我已经浏览了一些教程和问题 但我无法安静地理解正在发生的事情 或者在这种情况下 没有发生 当用户单击链接时 我正在加载地图
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • 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 三 一起摇摆案例 四 亮起来案例 五 美女时钟效果 六 进一步优化时钟 七 渐变