JavaWeb-js(4)

js事件

在前端页面中,js程序大多数是由事件来驱动的,当触发某些事件的时候,可以使用js负责响应。

js事件由三部分组成: 
    事件源——》指的是被触发的对象; 
    事件类型——》如何触发的事件,如:鼠标单击、双击、键盘操作等; 
    事件处理程序——》触发事件以后,使用一个函数来处理。 

因此事件步骤: 
    1. 获取事件源对象; 
    2. 注册事件;
    3. 添加处理程序。 

事件类型

 

 

 

事件的注册方式

1.静态注册 在html标签中注册 (如果元素是通过js创建的 ,就没法这样注册)

2.动态注册 在js代码中注册

<!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>

        .box{
            width: 200px;
            height: 200px;
            background-color: aqua;
        }
    </style>

</head>


<body>

    <!-- onclick 单击事件 -->
    <button onclick="clickEvent()" ondblclick="dblclickEvent()">我是按钮</button>

    <input id="phone-input" onfocus="focusEvent()" onblur="blurEvent()">

    <span id="check-text" style="display: none;">格式正确</span>


    <div class="box" onmouseover="mouseoverEvent()"
        onmouseout="mouseoutEvent()"
    ></div>

</body>
<script>




    //入口函数
    //可以方式js代码 先于html代码加载 导致 元素获取失败的问题
    window.onload = function () {
        console.log('加载完成了')
        console.log(document.querySelector('button'))



      
    }

    function clickEvent() {
            console.log('单击')
        }

        function dblclickEvent() {
            console.log('双击')

        }

        function focusEvent() {


            console.log('获取到焦点')
            console.log('请输入手机号')
        }

        function blurEvent() {

            //当失去焦点的时候验证手机号正确性
            console.log('开始验证手机号');

            let phoneInput = document.getElementById('phone-input')
            let phone = phoneInput.value


            let text = document.getElementById('check-text');
            text.style.display = 'inline';
            //验证手机号
            let reg = /^1[3456789]\d{9}$/

            if (reg.test(phone)) {
                text.innerText = '格式正确'
                text.style.color = '#00acff'
            } else {
                text.innerText = '格式有误'
                text.style.color = 'red'
            }
        }

        function mouseoverEvent(){
            console.log('鼠标划入')
        }

        function mouseoutEvent(){
            console.log('鼠标划出')
        }
</script>

</html>
 // false代表 事件冒泡 从下往上 默认的
    // true代表 事件捕获, 从上往下 
    document.getElementById('one').addEventListener('click', function () {

        console.log('one被点击了')
    },false)
    document.getElementById('two').addEventListener('click', function () {

        console.log('two被点击了')
    },false)
    document.getElementById('three').addEventListener('click', function () {

        console.log('three被点击了')
    },false)

option

false的话 就是事件冒泡了 从子元素到父元素
true的话   就是事件捕获 从父到子!

true 的触发顺序总是在 false 之前;
•如果多个均为 true,则外层的触发先于内层;
•如果多个均为 false,则内层的触发先于外层。

Event事件对象

事件对象e,是event的简称。当一个事件被触发时候,这个事件的有关数据都会被存储在一个事件对象e里面,这个对象e有许多固定方法提供给我们查看里面各种数据。 

Bom操作

<!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>

        body{
            height: 3000px;
        }

        .top-layout{
            width: 100%;
            height: 80px;
            background-color: blue;
            display: none;
            position: fixed;
            top: 0;
        }

        .goTop-btn{
            width: 50px;
            height: 50px;
            background-color: blue;
            border-radius: 50%;
            position: fixed;
            right: 100px;
            bottom: 100px;
            display: none;
        }
    </style>
</head>
<body>

    <div class="top-layout"></div>

    <div class="goTop-btn"></div>
    
</body>

<script>


    /*
    
        bom代表操作浏览器
        页面的放大缩小 , 页面的滚动, 浏览器加载情况
    */
   
   //监听浏览器加载完毕 方式1
   window.onload = function(){


   }

   //方式2
   window.addEventListener('load',function(){


   })

   //监听浏览器大小的改变
   window.addEventListener('resize',function(e){

    // console.log(window.innerWidth,window.innerHeight)
   })



   
   //获取 顶部栏目 和 按钮
   let topBtn= document.querySelector('.goTop-btn')
    let topLayout= document.querySelector('.top-layout');
    

   //监听浏览器滚动条滚动
   window.addEventListener('scroll',function(e){

 
    //获取当前滚动条的滑动距离
    let top = document.documentElement.scrollTop;

    
    if(top>1000){
        topLayout.style.display='block'
        topBtn.style.display='block'

    }else{
        topLayout.style.display='none'
        topBtn.style.display='none'
    }
   })


   //点击按钮 回到顶部
   topBtn.addEventListener('click',function(){

     window.scrollTo({
        top:0,
        behavior:"smooth"
     })
   })
</script>
</html>

定时器

  //定时器 1 setTimeout
    // function 延迟执行的函数,延迟的时间 
   let timeOut  =   setTimeout(function(){
        console.log(123)

          // 清除定时器
        // clearTimeout(this);
    },2000);


    function clearTime(){
        clearTimeout(timeOut);
    }
 // 循环执行的定时器:轮播图,倒计时,循环请求

   let setTime=  setInterval(function(){
        console.log("我被执行了")

    },1000)


    function clearTime(){
        clearInterval(setTime)

    }

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【题目/算法训练】:单调队列单调栈

&#x1f680; 前言&#xff1a; 【算法】单调队列&&单调栈 可以在看完这篇文章后&#xff0c;再来写下面的题目 一、绝对差不超过限制的最长连续子数组 思路&#xff1a; 1&#xff09; 就相当于滑动窗口&#xff0c;维护滑动窗口内的两个值&#xff0c;一个是最大值…

CV05_深度学习模块之间的缝合教学(1)

1.1 在哪里缝 测试文件&#xff1f;&#xff08;&#xff09; 训练文件&#xff1f;&#xff08;&#xff09; 模型文件&#xff1f;&#xff08;√&#xff09; 1.2 骨干网络与模块缝合 以Vision Transformer为例&#xff0c;模型文件里有很多类&#xff0c;我们只在最后…

Flutter——最详细(Table)网格、表格组件使用教程

背景 用于展示表格组件&#xff0c;可指定线宽、列宽、文字方向等属性 属性作用columnWidths列的宽度defaultVerticalAlignment网格内部组件摆放方向border网格样式修改children表格里面的组件textDirection文本排序方向 import package:flutter/material.dart;class CustomTa…

Mac 上安转文字转 SQL 利器 WrenAI

WrenAI 是一个开源的 Text-SQL 的工具&#xff0c;通过导入数据库结构&#xff0c;通过提问的方式生成 SQL。本文将讲述如何在 MacOS 上安装 WrenAI。要运行WrenAI&#xff0c;首先需要安装 Docker 桌面版。 下载 WrenAI https://github.com/Canner/WrenAI/releases/tag/0.7.…

开源流程表单设计器都有哪些值得一提的优势?

如果需要提质、增效、降本&#xff0c;不妨来了解下低代码技术平台、开源流程表单设计器的功能和优势特点。想要实现流程化办公&#xff0c;低代码技术平台是助力增效的理想工具。功能灵活、操作方便、好维修、可视化操作等优势都是其深受行业喜爱的优势特点。通过本文&#xf…

DDL也会有undo吗?模拟Oracle中DML、DDL与undo的关系,10046跟踪DDL语句

已经有两个月没有更新博客了&#xff0c;主要实在忙毕设和毕业的一些事情&#xff01;这两个月也是非常的精彩呀&#xff0c;充分体会到了职场的和校园的不同&#xff0c;作为一名刚毕业就满 1 年工作经验的牛马人&#xff0c;在两个月期间经历了两次调岗、两次降薪&#xff0c…

一句歌词描述夏天

夏天总是带着一种奇特的魔力&#xff0c;既能让人沉醉在阳光和海浪的浪漫中&#xff0c;也能在炎热与燥热中让人心生烦闷。特别是在夏日里情绪低落时&#xff0c;那些可以抚平心情的歌曲显得尤为珍贵。音乐&#xff0c;这个神奇的存在&#xff0c;总能在最需要的时候带来心灵的…

使用AutoGPT构建智能体:从LSTM到Prompt编写实战教程001

如果报错,这里会有一个环境变量的设置需要设置上. 然后这一节我们来自己制作一个智能体,来感受一下,实际上现在,大模型还是可以做很多功能的. 可以看到上面是智能体的架构,之前也说过了, 上面这几个功能,如果用我们人类去操作,还是需要花些时间的,如果用大模型就快很多了. 以…

利用Python的sympy包求解一元多次方程

一元1次方程 import sympy as sp # 导入sympy包 x sp.Symbol(x) # 定义符号变量 f 2*x -8 # 定义要求解的一元1次方程 x sp.solve(f) # 调用solve函数求解方程 x[4]一元2次方程 import sympy as sp # 导入sympy包 x sp.Symbol(x) # 定义符号变量 f …

Nature Protocols:整合多组学并进行因果推理的系统框架

转载自&#xff1a;MetaAI 在生物学研究中&#xff0c;随着实验和计算技术的进步&#xff0c;生物系统研究产生了大量高通量数据。技术努力主要集中在提高吞吐量、降低成本和提升实验与计算效率。因此&#xff0c;整合不同类型组学数据&#xff0c;并通过关联分析识别关键因素…

[机器学习]-人工智能对程序员的深远影响——案例分析

机器学习和人工智能对未来程序员的深远影响 目录 机器学习和人工智能对未来程序员的深远影响1. **自动化编码任务**1.1 代码生成1.2 自动调试1.3 测试自动化 2. **提升开发效率**2.1 智能建议2.2 项目管理 3. **改变编程范式**3.1 数据驱动开发 4. **职业发展的新机遇**4.1 AI工…

大数据开发者:如何快速熟悉新公司的技术环境

目录 1. 了解系统架构实践建议&#xff1a;示例对话&#xff1a; 2. 了解领域模型实践建议&#xff1a;示例&#xff1a; 3. 了解代码结构实践建议&#xff1a;示例&#xff1a; 结语 作为一名大数据开发者&#xff0c;加入新公司后快速熟悉技术环境是一项重要而又具有挑战性的…

bev 之 fastBEV

前面我们提到bev 之 LSS, 知道视觉的BEV方案的主要痛点在于: 1、depth 的预测 2、图像特征到BEV特征之间的视图变换消耗大量计算 LSS 为什么需要D维深度 占据大量消耗的原因是LSS 对每个图像特征点引入深度D&#xff0c;即假设每个像素上存在可能的D维深度。也就是假设不同像…

C++ 栈-队列-优先级队列

目录 1 栈 2 队列 3 deque 介绍 4 优先级队列 5 反向迭代器 栈也是我们在C语言就模拟实现过的一种数据结构&#xff0c;在C中&#xff0c;栈其实和我们前面模拟实现过的string、vector等容器有一点区别&#xff0c;站起是不是容器&#xff0c;而是一种容器适配器&#xff0c;我…

Floyd判圈算法——寻找重复数(C++)

287. 寻找重复数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返…

python基础语法笔记(有C语言基础之后)

input()用于输入&#xff0c;其有返回值&#xff08;即用户输入的值&#xff09;&#xff0c;默认返回字符串。括号里可放提示语句 一行代码若想分为多行来写&#xff0c;需要在每一行的末尾加上“\” 单个“/”表示数学中的除法&#xff0c;不会取整。“//”才会向下取整。 …

无人机之飞行规划与管理篇

无人机飞行规划与管理是确保无人机安全、高效且符合法规的运行的关键步骤。这一过程包括了对飞行任务的详细安排、航线的设定以及风险的评估和管理。下面简述这一过程的主要环节&#xff1a; 一、飞行目的和任务确定 在规划之初&#xff0c;必须明确无人机的飞行目的&#xf…

HTTPS理解

一个完整的HTTP连接 TCP三次握手接受窗口发送数据关闭连接 接受窗口是用来做什么呢&#xff1f; 它根据自身网络情况设置不同大小的值用来控制对方发送速度&#xff0c;避免对方发送太快&#xff0c;导致网络拥塞。 为什么TCP握手要三次&#xff1f; 1&#xff09;确认双方的…

单片机中有FLASH为啥还需要EEROM?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 一是EEPROM操作简单&…

JDK11中zgc垃圾回收器的探索

背景 垃圾回收器主要做的事情 自动跟踪和管理程序中创建的对象&#xff0c;确定哪些对象仍在使用&#xff0c;哪些对象已经不再使用。回收那些不再使用的对象所占用的内存空间&#xff0c;使得这部分内存可以被重新使用。 1.1 传统垃圾回收器 垃圾回收器简述优缺点应用场景…