2.案例、鼠标时间类型、事件对象参数

news2024/11/19 20:27:51

案例

注册事件


    <!-- //disabled默认情况用户不能点击 -->
    <input type="button" value="我已阅读用户协议(5)" disabled>
    <script>
        // 分析:
        // 1.修改标签中的文字内容
        // 2.定时器
        // 3.修改标签的disabled属性
        // 4.清除定时器
        // 5.条件判断

        // 结论:以上的知识点都放在定时器中完成

        // 代码实现
        // 1.获取按钮标签
        let btn = document.querySelector('input')
        // 2.定义一个变量保存开始值
        let num = 5;
        // 3.数字要递减,放到定时器中
        let timeId = setInterval(function () {
            // 数字递减
            --num
            // 修改标签中的文字内容
            btn.value = `我已阅读用户协议(${num})`;
            // 6.判断数字是否小于0
            if (num < 0) {
                // 7.修改按钮上的文字
                btn.value = '同意';
                // 8.修改按钮为可点击状态
                btn.disabled = false
                // 9.停止定时器
                clearInterval(timeId);
            }

        }, 1000)

    </script>

在这里插入图片描述

轮播图

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }

        .slider {
            width: 450px;
            height: 300px;
        }

        .slider img {
            width: 100%;
        }

        .slider-footer {
            height: 10px;
            width: 450px;
        }

        ul li {
            height: 10px;
            width: 20px;
            /* border-radius: 50%; */
            float: left;
            margin-left: 30px;
            list-style: none;
            background-color: gray;
        }

        .active {
            background-color: red;
        }
    </style>
</head>

<body>

    <div class="slider">
        <div class="slider-wrapper">
            <img src="" alt="">
        </div>
        <div class="slider-footer">
            <p>对人类来说会不会太超前了</p>
            <ul class="slider-indicator">
                <li class="active"></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>

            </ul>
            <div class="toggle"></div>
        </div>
    </div>



    <script>


        //2.初始化数据
        const goodList = [
            {
                img: '../image/1.jpg',
                id: '4001171',
                name: '商品1',
                price: '289.0'
            },
            {
                img: '../image/2.jpg',
                id: '4001172',
                name: '商品2',
                price: '189.0'
            },
            {
                img: '../image/3.jpg',
                id: '4001173',
                name: '商品3',
                price: '89.0'
            },
            {
                img: '../image/4.jpg',
                id: '4001174',
                name: '商品4',
                price: '589.0'
            },
            {
                img: '../image/5.jpg',
                id: '4001175',
                name: '商品5',
                price: '589.0'
            },
            {
                img: '../image/6.jpg',
                id: '4001176',
                name: '商品6',
                price: '29.0'
            },
            {
                img: '../image/7.jpg',
                id: '40011727',
                name: '商品7',
                price: '89.0'
            },
            {

                img: '../image/8.jpg',
                id: '4001178',
                name: '商品8',
                price: '189.0'
            }
        ]

        // 分析:
        // 1.从数组中获取对应的数据(图片路径)   
        // 2.将图片路径设置给对应的图片标签
        // 3.从数组中获取对应的数据(标题)
        // 4.将标题文字设置给对应的p标签
        // 5.将对应的li标签添加一个active类名

        // 代码实现
        // 1.定义变量保存当前从数据中的第几个值开始
        let index = 0
        // 2.获取标签对象
        let img = document.querySelector('img')
        let p = document.querySelector('p')
        // 3.开启定时器
        setInterval(function () {
            //4.在定时器中,我们要从数组中依次取值

            // 5.从数组中取值

            if (index >= goodList.length) { index = 0 }
            let obj = goodList[index]
            index++
            console.log(obj)
            // 6.从当前对象中获取图片路径和图片对应的标题
            let imgSrc = obj.img
            let p_title = obj.name
            // 7.将图片路径设置给img标签将标题设置给p标签

            img.src = imgSrc
            p.innerText = p_title

            // 9-1 先将页面中的active类名移除掉
            document.querySelector('.active').classList.remove('active')

            // 8.获取对应的li标签(当前是第几张图片,选中第几个li标签)
            let li = document.querySelector(`li:nth-child(${index})`)
            console.log(li)
            // 9.给当前的li标签添加active名
            li.classList.add('active')
        }, 3000)





    </script>
</body>

</html>

在这里插入图片描述

事件基本介绍

在网页中事件是用户的一个动作
用来实现用户和网页交互

      事件三要素
       a)事件源:用户的动作作用到那个标签身上,那个标签就是事件源
       b)事件类型:用户使用的是什么动作(点击事件、输入事件、悬停事件)
       c)处理程序:代表事件最后要实现的具体效果,就是一个匿名函数
    <div></div>
    <div></div>
    <script>
        //  绑定事件
        // 1.先获取事件源(DOM标签对象)
        // 2.给事件源绑定事件
        //事件源.addEventListener('事件类型',function(){});
        //备注:事件类型常用的一个点击事件:click
        // 
        // 代码演示
        // 点击div给div设置背景颜色
        let div = document.querySelector('div')
        div.addEventListener('click', function () {
            div.style.backgroundColor = 'pink'
        })


    </script>

在这里插入图片描述

其他方式绑定事件

给元素绑定事件推荐使用addEventListener方式
给元素绑定事件:DOML2写法:addEventListener
DOML0写法:事件源.on事件类型=function(){}
两种注册时间的区别:
a)addEventListener是个方法
b)on的方式本质上是一个属性
c)如果给元素注册多个相同的时间,则addEventListener都可以执行
d)如果给元素注册多个相同的事件,on的方式只能执行一个

    <input type="button" value="按钮">
    <script>

        let btn = document.querySelector('input')
        // DOML2写法:
        // btn.addEventListener('click', function () {
        //     btn.style.color = 'red'
        // })

        // DOML0写法:
        btn.onclick = function () {
            btn.style.color = 'red'
        }

        
    </script>

鼠标事件类型

鼠标触发

click 鼠标点击
mouseenter 鼠标进入
mouseleave 鼠标离开

焦点事件

focus 获得焦点

输入框获得鼠标光标

blur 失去焦点

键盘触发

键盘事件要么给整个页面注册,要么给输入框注册·······

Keydown 键盘按下触发
Keyup 键盘抬起触发

表单输入触发

input 用户输入事件

事件对象参数(只能设置一个)

作用:用来记录当前事件中的一些信息
注意:
a)任何一个事件都有事件对象参数,用就设置事件对象参数,不用就不加
b)键盘事件/鼠标事件===>常常会用到事件对象参数
c)键盘事件参数记录当前用户按下的是哪个按键
d)鼠标事件对象参数最重要的是记录了鼠标的坐标信息

    <input type="text">
    <script>

//键盘事件,鼠标事件类似
        let int = document.querySelector('input');
        int.addEventListener('keydown', function (e) {
            // e是event的缩写,叫事件对象参数
            console.log(e)
        })

    </script>

在这里插入图片描述

鼠标事件总结

事件对象参数.clientX 横坐标,参照页面左上角(参照页面可视区左上角)
事件对象参数.offsetX 横坐标,参照事件源左上角
事件对象参数.pageX 横坐标,参照页面左上角(看看页面中是否有滚动条,pageX包括滚动条滚动的距离)
事件对象参数.screenY 纵坐标,参照整个电脑屏幕左上角

自动点击触发事件

<body>
    <input type="button">
    <script>
// 自动触发事件
// 语法:DOM标签对象.click();

// 要求:点击按钮输出一句话
let btn=document.querySelector('input')
btn.addEventListener('click',function(){
    console.log('hehe')
})
btn.click()
//自动触发点击事件(得首先有事件)
    </script>
</body>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1514422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GUROBI之数学启发式算法Matheuristics

参考运小筹的帖子&#xff1a;优化求解器 | Gurobi 数学启发式算法&#xff1a;参数类型与案例实现 - 知乎 (zhihu.com) 简言之&#xff0c;数学启发式是算法就是数学规划和启发式算法的融合&#xff0c;与元启发式算法相比&#xff0c;数学启发式算法具有更强的理论性。 在GUR…

WEB区块链开发组件 - KLineChart

当我们开发区块链的时候&#xff0c;实现K线可能大家会想到EChart&#xff0c;但是EChart做可能需要耗费大量工作量&#xff0c;实现出来的功能估计也是牵强着用。 这时候&#xff0c;我们可能网上会搜索到TradingView,可是这个组件虽然功能非常强大&#xff0c;但是还是要费事…

视觉图像处理和FPGA实现第三次作业--实现一个加法器模块

一、adder模块 module adder(ina, inb, outa); input [5:0] ina ; input [5:0] inb ; output [6:0] outa ;assign outa ina inb; endmodule二、add模块 module add(a,b,c,d,e); input [5:0] a ; input [5:0] b ; input [5:…

Matlab R2021a安装教程(附带免费安装包)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 Matlab简介 Matlab是一种高级技术计算语言和交互式环境&#xff0c;用于算法开发、数据可视化和数值计算。它集成了数学、工程和科…

unity中实现场景跳转

1&#xff0c;第一步创建2个场景&#xff08;右键资源窗口&#xff0c;名字这里我取的1111和2222&#xff09; 2.添加跳转按钮&#xff08;双击其中一个场景并添加按钮&#xff09; 3.编辑按钮的文字&#xff08;将原本的按钮打开点击里面的text&#xff0c;就可以在右边编辑文…

MySQL 多种日期处理函数介绍

MySQL 提供了多种日期处理函数&#xff0c;用于处理和操作日期和时间数据。这些函数可以帮助你执行如日期计算、时间转换、格式化输出等操作。以下是一些常用的 MySQL 日期处理函数及其用法&#xff1a; 日期和时间格式化函数 1. **DATE_FORMAT()**&#xff1a;将日期或时间戳格…

AI壁纸号一周增加上千粉丝,轻松变现的成功案例分享

前言 随着AI绘画技术的发展&#xff0c;传统的互联网副业壁纸号在新的技术加持下迎来了第二春。本文将分享一位壁纸号创作者的成功案例&#xff0c;并为大家提供创作门槛和硬件要求等相关信息。 该项目的创作门槛极低&#xff0c;基本上可以由AI完成内容创作。不过&#xff0…

使用python实现一个dicom影像解析入库程序demo

简介 DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;是医学图像和相关信息的国际标准。它定义了医学影像的格式和通信协议&#xff0c;使得不同设备和系统之间可以交换和共享医学图像和相关数据&#xff0c;如CT扫描、MRI图像、超声波图像等。…

代码随想录算法训练营第七天| 454.四数相加II、383.赎金信、15.三数之和、18.四数之和

系列文章目录 目录 系列文章目录454.四数相加II使用HashMap法 383.赎金信哈希解法&#xff08;数组&#xff09; 15.三数之和双指针法 18.四数之和双指针法 454.四数相加II 题解&#xff1a;该题和1.两数之和的方法是一样的&#xff0c;这个题的难点在于key和value分别是什么。…

发那科数控机床FanucCNC(NCGuide)仿真模拟器配置和数据采集测试

开发日记3.12 此篇用于记录发那科数控机床(Fanuc CNC)采集程序开发中&#xff0c;用虚拟机做测试时&#xff0c;虚拟机的配置和使用以支持采集软件开发和测试。 配置虚拟机使用仿真软件 下载VMware15 「链接&#xff1a;https://pan.xunlei.com/s/VNsl9Gmb14ANBiiNlsT7vA2LA…

Day15 面向对象进阶——接Day14

Day15 面向对象进阶——接Day14 文章目录 Day15 面向对象进阶——接Day14一、访问修饰符二、Object三、深入String的equals()方法四、final 一、访问修饰符 1、含义&#xff1a;修饰类、方法、属性&#xff0c;定义使用的范围 2、经验&#xff1a; 2.1.属性一般使用private修…

springboot3 打包报错32-bit architecture x86 unsupported或者 returned non-zero result

springboot3 打包异常情况处理记录 在测试springboot3 native打包时候遇到的异常&#xff0c;百度和谷歌上方法都无法解决我的问题&#xff0c;最后记录一下我最后的原因和解决方案。 前置要求&#xff1a;自己处理好vs的相关内容后 报错一&#xff1a; [1/7] Initializing…

Vue3 前端生成随机id( 生成 UUID )

效果展示 封装工具&#xff08;代码展示&#xff09; 重新创建一个文件**/utils/someTools.js**&#xff0c;并在里面写入如下代码。 function Tools() {}Tools.prototype.guid function () {return xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.replace(/[xy]/g, function (c) {v…

Android SDK 开发 云托管

开发SDK,拒绝重复造轮子。 本文陈述两种SDK开发方式&#xff0c;第一种AAR方式&#xff1b;第二种远程依赖方式。 具体步骤分为&#xff1a; 一、如何开发SDK&#xff1f; 二、如何打包AAR&#xff1f; 三、如何打包AAR&#xff1f; 四、如何进行SDK远程托管&#xff1f; 五、如…

工业物联网平台在水务环保、暖通制冷、电力能源等行业的应用

随着科技的不断发展&#xff0c;工业物联网平台作为连接物理世界与数字世界的桥梁&#xff0c;正逐渐成为推动各行业智能化转型的关键力量。在水务环保、暖通制冷、电力能源等行业&#xff0c;工业物联网平台的应用尤为广泛&#xff0c;对于提升运营效率、降低能耗、优化管理等…

toJSONString空值被忽略解决办法 toJSONString过程中时间格式丢失问题解决办法

toJSONString空值被忽略解决办法 原代码&#xff1a; GcGarbageBuildingDO data gcGarbageBuildingService.get(id); result.putAll(JSON.parseObject(JSON.toJSONString(data), Map.class));查询出来的data中部分字段值为null&#xff0c;在toJSONString的过程中会把null值…

基于STM32的感应开关垃圾桶

1.定时器介绍 1.1 工作原理 使用精准的时基&#xff0c;通过硬件的方式&#xff0c;实现定时功能。 1.2 定时器分类 基本定时器&#xff08;TIM6~TIM7&#xff09;通用定时器&#xff08;TIM2~TIM5&#xff09;高级定时器&#xff08;TIM1和TIM8&#xff09; 1.3 通用定时器…

【C语言】Windows下的C语言线程编程详解

文章目录 1. 头文件1.1 windows.h1.2 process.h 2. 创建线程3. 线程同步3.1 线程同步方式3.1 互斥量&#xff08;Mutex&#xff09;3.2 事件&#xff08;Event&#xff09; 4. 线程的结束与资源管理5.线程池&#xff08;简要&#xff09; 在Windows平台下&#xff0c;C语言提供…

隧道技术和代理技术(三)

隧道技术 知识点 -隧道技术&#xff1a;解决不出网协议上线的问题&#xff08;利用出网协议进行封装出网&#xff09; -代理技术&#xff1a;解决网络通讯不通的问题&#xff08;利用跳板机建立节点后续操作&#xff09; 内环境示意图&#xff0c;方便理解 思路&#xff1a;…

【网络原理】UDP协议的详细解析

文章目录 &#x1f384;UDP协议概念&#x1f332;UDP协议端格式&#x1f384;UDP的特点&#x1f338;无连接&#x1f338;不可靠传输&#x1f338;面向数据报&#x1f338;缓冲区&#x1f338;全双工&#x1f338;大小受限 &#x1f340;基于UDP的应用层协议&#x1f38d;扩展问…