JavaScript进阶:WebAPIs重点知识整理1

目录

1 DOM修改元素内容

2 DOM修改元素常见属性

3 修改元素样式属性

3.1 通过style修改元素样式

3.2 通过类名className修改元素样式

3.3 通过classList修改元素样式

4 操作表单元素属性

5 自定义属性

6 定时器

7 事件监听

7.1 点击事件 click

7.2 鼠mouseenter和移开事件mouseleave

7.3 焦点事件

7.4 键盘事件

7.5 用户输入事件 input

8 事件对象

8.1 通过事件对象获取按下了哪个键

9 补充

10 环境对象 this

11 回调函数

12 补充:伪类选择器

13 事件流

13.1 事件捕获

13.2 事件冒泡

13.3 阻止冒泡

14 解绑事件

14.1 onclick() 方法如何解绑事件

14.2 addEventListener() 方法解绑事件

15 事件委托

16 阻止默认行为

17 页面加载事件

18 页面滚动事件

18.1 元素滚动事件

18.2 页面尺寸事件

18.3 元素的尺寸和位置

18.3.1 获取宽高

18.3.2 获取位置

18.4 总结

19 补充:属性选择器

20 日期对象

20.1 实例化,获取相应的时间

20.2 日期对象中,常用的方法

20.3 获取当前时间戳


1 DOM修改元素内容

const b = document.querySelector('.box')// 1. 对象.innerText = '新的文字内容';
b.innerText = '新的文字内容'
b.innerText = '<strong></strong>'   // 不解析标签// 2. 对象.innerHTML = '新的文字内容';
b.innerHTML = '<strong>我是加粗的文字</strong>'   // 解析标签

 

2 DOM修改元素常见属性

    <div><div class="box">我是文件内容</div><img src="./girl.jpg" alt=""></div><script>// 1.修改元素属性const img = document.querySelector('img');img.src = './girl2.jpg'img.alt = '美女加载失败'img.title="美女"</script>

 

3 修改元素样式属性

3.1 通过style修改元素样式

    <style>.box {width: 100px;height: 100px;background-color: pink;}</style>
</head>
<body><div class="box"></div><script>const box = document.querySelector('.box')box.style.width = '200px' // 修改元素的宽度为200px, 一定要带单位!!!box.style.backgroundColor = 'red' // 修改元素的背景颜色为红色, 需要用 小驼峰 命名box.style.border = '3px solid black'</script>

3.2 通过类名className修改元素样式

元素.className = '类名'
className: 会覆盖之前的类的样式

3.3 通过classList修改元素样式

classList 可以解决覆盖以前的类名的问题

元素.classList.add('类名')    类名前不用加 .
元素.classList.remove('类名')
元素.classList.toggle('类名')  切换类: 有就删掉,没有就加上

 

4 操作表单元素属性

1. 获取:表单.value2. 设置:表单.value = '新的值'3. 修改表单的类型<input type="text" value="请输入用户名">const input = document.querySelector('input')input.type = 'password'// checked 属性  disabled 属性<input type="checkbox" name="" id=""><button>点击</button><script>const input = document.querySelector('input');console.log(input.value)  // 1.获取表单的值input.value = '222'  // 2.修改input的值// input.type = "password"  // 2.修改input的类型const input = document.querySelector('input')console.log(input.checked)  // 获取input的选中状态input.checked = true  // 修改input的选中状态const button = document.querySelector('button')button.addEventListener('click', function() {button.disabled = true  // 禁用按钮})</script>

 

5 自定义属性

    // data-  开头的全部都是自定义属性<div data-id="1" data-spm="hhh" data-scm="yyy">01</div> <div data-id="2">02</div><div data-id="3">03</div><div data-id="4">04</div><div data-id="5">05</div><script>const one = document.querySelector('div')console.log(one.dataset.id)   // 通过这个获取自定义属性的值console.log(one.dataset.spm)</script>

 

6 定时器

    <script>// setInterval(函数, 时间)  时间单位为毫秒let time= setInterval(function() {console.log('hello world')  // 每隔3秒执行一次函数,函数内容为打印hello world;},3000)// 上述定时器赋给变量time, 返回的是数字型,是定时器的id 号,每个定时器都是独一无二的clearInterval(time)  // 清除定时器,传入定时器的id号</script>

 

7 事件监听

语法:

    元素对象.addEventListener('事件类型', 事件处理函数)

下面的事件直接给出实例 

7.1 点击事件 click

随机点名案例:

 

 

js中也有可以直接调用的点击事件   click()

 

7.2 鼠mouseenter和移开事件mouseleave

7.3 焦点事件

7.4 键盘事件

7.5 用户输入事件 input

通过input事件,可以实时获取到用户输入的内容

 

8 事件对象

8.1 通过事件对象获取按下了哪个键

e.key 

 

9 补充

处理字符串的方法 trim():去除字符串前后空格  如果用户输入的是空格,则直接清空,值就变为空了

当页面中有滚动事件时,让其丝滑滚动 

 

 

10 环境对象 this

function fn() {console.log(this)// 1. 普通函数中,this 指向window
}const btn = document.querySelector('button')
btn.addEventListener('click', fn) {// 2. 事件处理函数中,this 指向事件源对象console.log(this)  // 这边this指向button
}

总结:this指向函数的调用者 

 

11 回调函数

 

12 补充:伪类选择器

:checked

 

13 事件流

事件流的两个阶段:

    1.捕获阶段:从外向内(父到子)

    2.冒泡阶段:从内向外(子到父)

13.1 事件捕获

    <!-- 1.事件捕获 --><div class="fan"><div class="son"></div></div><script>const fan = document.querySelector('.fan')const son = document.querySelector('.son')document.addEventListener('click', function() {alert('点击了页面')},true)  // true 表示事件捕获, 若为false 表示事件冒泡,默认为falsefan.addEventListener('click', function() {alert('点击了父元素')},true)son.addEventListener('click', function() {alert('点击了子元素')},true)</script>

13.2 事件冒泡

13.3 阻止冒泡

语法:

    事件对象.stopPropagation()

  (此方法可以阻断事件流动传播,不光在冒泡阶段有效,捕获阶段也有效)

     e.stopPropagation()  // 阻止事件冒泡


 

 

14 解绑事件

14.1 onclick() 方法如何解绑事件

14.2 addEventListener() 方法解绑事件

removeEventListener()

 

15 事件委托

优点:减少了事件的注册次数,可以提高程序性能

原理:事件委托其实是利用事件冒泡的特点

--->>>  给父元素注册事件,当我们触发子元素的时候,会冒泡到父元素的身上,从而触发父元素的事件

    <ul><li>第1个孩子</li><li>第2个孩子</li><li>第3个孩子</li><li>第4个孩子</li><li>第5个孩子</li><p>uuu</p></ul><script>// 1.获取父元素const ul = document.querySelector('ul')ul.addEventListener('click', function(e) {// alert('点击了li')// e.target 获取当前点击的对象e.target.style.backgroundColor = 'red'  // 改变点击的li的背景颜色为红色// 我们指向点击li进行变色, 不让标签p 变色// 2.判断点击的元素是否为li  可以指定元素对象进行变色if (e.target.tagName === 'LI') {  // tagName 获取标签名// 3.是li 修改背景颜色e.target.style.backgroundColor = 'pink'}})</script>

 

16 阻止默认行为

e.preventDefault()   ->  注意和前面的阻止冒泡区分下

    <form action="http://www.itcast.cn"><input type="submit" value="免费注册"></form><a href="http://www.baidu.com">百度</a><script>const form = document.querySelector('form')  // 获取form元素form.addEventListener('submit', function(e) {e.preventDefault()  // 阻止默认行为 })const a = document.querySelector('a')a.addEventListener('click', function(e) {e.preventDefault()  // 阻止默认行为 })</script>

 

17 页面加载事件

    <button>按钮</button><script>// 1.页面加载事件// 1.1 等到资源都加载完了,在执行js代码,这样的话script标签可以放在页面的任何位置// 等待页面所有资源都加载完毕了,就回去执行回调函数window.addEventListener('load', function(){const btn = document.querySelector('button')btn.addEventListener('click', function() {alert('点击了')})})// 1.2 也可以等待具体的元素加载完毕,再去执行相应的代码// 等待id为one的元素加载完毕,再去执行回调函数img.addEventListener('load', function(){//...})// 1.3 DOMContentLoaded事件// 只等待dom结点加载完毕,不等待图片、视频等资源加载完毕document.addEventListener('DOMContentLoaded', function(){//...})// 注意:DOMContentLoaded事件比load事件更快一些</script>

 

18 页面滚动事件

18.1 元素滚动事件

scrollLeft 和 scrollTop 属性可以获取页面滚动的位置,scrollLeft获取水平滚动的位置,scrollTop获取垂直滚动的位置。

  <script>window.addEventListener('scroll', function(){console.log('滚动了')// 1.获取页面滚动到哪个位置// scrollLeft 和 scrollTop 属性可以获取页面滚动的位置,scrollLeft获取水平滚动的位置,scrollTop获取垂直滚动的位置。// 注意:这两个属性只有当有滚动条的时候才能获取到值,否则获取到的都是0// 获取被卷去的大小// 获取元素内容往左  往上滚出去看不到的距离// 这两个值是可读写的const div = document.querySelector('div')console.log(div.scrollTop)// 2. 获取html元素的写法// document.documentElement.scrollTop  检测页面被卷去的距离console.log(document.documentElement.scrollTop) // html滚动的位置// 3. 返回顶部const backToTop = document.querySelector('backToTop') // 获取返回顶部的元素// 给返回顶部元素添加点击事件,点击时把页面滚动到顶部位置,滚动到0的位置,就是滚动到顶部位置。backToTop.addEventListener('click', function(){// 设置滚动的位置document.documentElement.scrollTop = 0// 或者// window.scrollTo(0, 0)})})</script>

18.2 页面尺寸事件

clientWidth 和 clientHeight 属性可以获取元素可见部分的宽度和高度

   <div></div><script>// 1. clientWidth 和 clientHeight 属性可以获取元素可见部分的宽度和高度。const div = document.querySelector('div') // 获取div元素console.log(div.clientWidth) // 获取div元素的可见部分的宽度console.log(div.clientHeight) // 获取div元素的可见部分的高度// resize 事件会在窗口或框架被调整大小时触发。window.addEventListener('resize', function(){console.log(document.documentElement.clientWidth);})</script>

18.3 元素的尺寸和位置

18.3.1 获取宽高

 offsetWidth 和 offsetHeight:

        1.获取元素的自身宽高,包含元素自身设置的宽高, padding, border等

        2. 注意:获取的是可视宽高,如果盒子是隐藏的,获取的结果是 0,

18.3.2 获取位置

方式1:offsetLeft 和 offsetTop

获取元素距离自己定位父级元素的左, 上距离offsetLeft 和 offsetTop 为只读属性。比如一个窗口中有两个盒子,小盒子在大盒子的里面,如果,大盒子有定位; 那么小盒子相对于大盒子定位,小盒子距离大盒子左, 上距离; 如果大盒子没有定位,那么小盒子相对于窗口定位,小盒子距离窗口左, 上距离;

方式2:getBoundingClientRect()

element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。

18.4 总结

19 补充:属性选择器

 

20 日期对象

20.1 实例化,获取相应的时间

        // 1.得到当前时间const date  = new Date()console.log(date)// 2.得到指定时间const date1 = new Date('2024-01-01 00:00:00')console.log(date1)

 20.2 日期对象中,常用的方法


        // 1. 日期对象的一些方法let year = date.getFullYear()let month = date.getMonth() + 1let day = date.getDate()let hours = date.getHours()let minutes = date.getMinutes()let seconds = date.getSeconds()let xq = date.getDay()  // 0-6  0代表周日// console.log(year, month, day, hours, minutes, seconds)// 月份和天数前面补零操作month = month < 10 ? '0' + month : monthday = day < 10 ? '0' + day : dayconsole.log(`${year}-${month}-${day}`)// 2. 也可以通过这种方式获取简单形式的时间console.log(date.toLocaleString())  //  2024/1/20 20:14:26console.log(date.toLocaleDateString())   //   2024/1/20console.log(date.toLocaleTimeString())   //  20:14:51

20.3 获取当前时间戳

因为时间是不方便相加减的,所以我们需要获取当前时间或指定时间对应的时间戳(单位为毫秒),利用时间戳来相加减,典型案例就是倒计时案例

       // 方式1: getTime()// 用这种方法首先需要实例化日期对象const date2 = new Date()const time1 = date2.getTime()// console.log(time1)console.log('--------------')// 方式2: +new Date()console.log(+new Date())// 返回指定时间的时间戳console.log(+new Date('2024-01-01 18:30:00'))console.log('--------------')// 方式3: Date.now()console.log(Date.now())// 但是这种方式只能得到当前的时间戳,而前面两种方式可以得到指定时间的时间戳


注意上述的天时分秒是如何换算得到的

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

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

相关文章

【Linux】权限 !

Linux 权限 Liunx Linux 权限1 什么是权限1.1 Linux用户1.2 切换用户 2 权限管理2.1 文件访问者的分类2.2 文件类型和访问权限2.3 文件权限的设置方法chmod 命令chown 命令chgrp 命令umask 命令file 指令 2.4 目录权限粘滞位 3 权限总结 1 什么是权限 关于Linux的权限问题&…

项目风险管理

风险分类&#xff1a; 分类性质&#xff1a;纯粹风险&#xff0c;投机风险---对应火灾&#xff0c;股票买卖 产生原因&#xff1a;自然&#xff0c;社会&#xff0c;政治&#xff0c;经济&#xff0c;技术 风险性质&#xff1a;客观性&#xff0c;偶然性&#xff0c;相对性&a…

28个炫酷的纯CSS特效动画示例(含源代码)

CSS是网页的三驾马车之一&#xff0c;是对页面布局的总管家&#xff0c;2024年了&#xff0c;这里列出28个超级炫酷的纯CSS动画示例&#xff0c;让您的网站更加炫目多彩。 文章目录 1. 涌动的弹簧效果2. 超逼真的3D篮球弹跳&#xff0c;含挤压弹起模态3. 鼠标放div上&#xff0…

基于ICEEMDAN-SpEn(样本熵)联合小波阈值去噪

代码原理 以样本熵为阈值的ICEEMDAN&#xff08;Incomplete Ensemble Empirical Mode Decomposition with Adaptive Noise&#xff09;联合小波阈值去噪是一种信号处理方法&#xff0c;用于去除信号中的噪声。它结合了ICEEMDAN分解和小波阈值去噪方法。 以下是该方法的步骤&a…

MySQL---多表分组查询综合练习

创建dept表 CREATE TABLE dept ( deptno INT(2) NOT NULL COMMENT 部门编号, dname VARCHAR (15) COMMENT 部门名称, loc VARCHAR (20) COMMENT 地理位置 ); 添加dept表主键 mysql> alter table dept add primary key(deptno); Query OK, 0 rows affected (0.02 s…

CPMS靶场练习

关键&#xff1a;找到文件上传点&#xff0c;分析对方验证的手段 首先查看前端发现没有任何上传的位置&#xff0c;找到网站的后台&#xff0c;通过弱口令admin 123456可以进入 通过查看网站内容发现只有文章列表可以进行文件上传&#xff1b;有两个图片上传点 图片验证很严格…

a16z Web3行业展望 2024:新的一年,新的理念,新的方式

原文标题&#xff1a;《new year, new ideas, new ways》 撰文&#xff1a;a16z Crypto 编译&#xff1a;Carl&#xff0c;Techub News 原文链接&#xff1a;a16z Web3行业展望 2024&#xff1a;新的一年&#xff0c;新的理念&#xff0c;新的方式 a16z 此前发布了2024 年「…

ubuntu使用docker compose一键部署项目

1、将前面手动部署的容器和镜像全部删除 docker rmi hmall (hmall镜像名) docker rmi image_id rmi 是删除多个 rm是删除一个 2、执行命令 docker compose up -d http://192.168.79.129:18080/search.html 访问安装成功&#xff01; 该ip是虚拟机ubuntu的ip 3、docker-compos…

pnpm使用

文章目录 前言一、安装二、设置镜像三、使用总结如有启发&#xff0c;可点赞收藏哟~ 前言 pnpm 全称 performant npm&#xff0c;意思为 高性能的 npm 速度快、节约磁盘空间、支持 monorepo、安全性高。 一、安装 npm install -g pnpm or brew install pnpm二、设置镜像 #…

Vue.js在养老院管理系统前端开发中的应用与优化

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(二):核心机制策略

关于MySQL部分的核心知识进行一网打尽,包括三部分:基础知识考察、核心机制策略、性能优化策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第二部分:核心机制策略,子节点表示追问或同级提问 日志机制 关于MySQL的几…

牛客周赛 Round 18 解题报告 | 珂学家 | 分类讨论计数 + 状态DP

前言 整体评价 前三题蛮简单的&#xff0c;T4是一个带状态的DP&#xff0c;这题如果用背包思路去解&#xff0c;不知道如何搞&#xff0c;感觉有点头痛。所以最后还是选择状态DP来求解。 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 游游的整数翻转 这题最好…

RTDETR最强结构图 | 包含模型整体结构图 | 全模块展开图 | AiFi模块展开图

文章目录 模型基础结构图AIFI模块结构图模型全模块展开图这一专栏为基于Ultralytics项目的RT-DETR魔改版本,与百度飞桨框架中的RT-DETR相比,除了框架外几乎没有区别。 本专栏旨在为那些渴望通过改进RT-DETR算法发表论文的同学提供全方位支持。每一篇文章都包含完整的改进代码…

chrome浏览器Extension插件开发框架对比和介绍

想开发chrome浏览器插件的话&#xff0c;如果没有一个好的框架支持&#xff0c;那么你只能手写js和html实现了&#xff0c;这样做的话&#xff0c;可能效率没有那么高&#xff0c;所以github上就有一些牛人来定制化了这些操作&#xff0c;将react和vue等开发框架快速集成&#…

【C++进阶07】哈希表and哈希桶

一、哈希概念 顺序结构以及平衡树中 元素关键码与存储位置没有对应关系 因此查找一个元素 必须经过关键码的多次比较 顺序查找时间复杂度为O(N) 平衡树中为树的高度&#xff0c;即O( l o g 2 N log_2 N log2​N) 搜索效率 搜索过程中元素的比较次数 理想的搜索方法&#xff1a…

测试不拘一格——掌握Pytest插件pytest-random-order

在测试领域&#xff0c;测试用例的执行顺序往往是一个重要的考虑因素。Pytest插件 pytest-random-order 提供了一种有趣且灵活的方式&#xff0c;让你的测试用例能够以随机顺序执行。本文将深入介绍 pytest-random-order 插件的基本用法和实际案例&#xff0c;助你摆脱固定的测…

ICCV2023 | MCD: Misalign, Contrast then Distill:重新思考VLP中的错位

论文标题: Misalign, Contrast then Distill: Rethinking Misalignments in Language-Image Pretraining 论文地址&#xff1a;ICCV 2023 Open Access Repository 代码&#xff1a;None LG AI Research 一、问题提出 SLIP发现&#xff0c;在CLIP中引入增强&#xff08;特别…

spring项目aop实现接口防止连续点击锁

aop实现 1&#xff0c;注解 注解用于接口方法、接口参数、和请求实体的属性上。 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** author dll*/ Ta…

MfgTool烧写工具

系列文章目录 MfgTool烧写工具 MfgTool烧写工具 系列文章目录一、MfgTool工具简介二、烧写NXP官方系统三、烧写自己的系统四、改造自己的烧写工具 一、MfgTool工具简介 1、mfgtool是NXP官方做的向I.MX系列烧写系统的软件&#xff0c;运行在windows下。可以烧写uboot.imx、zIma…

如何在Shopee深圳站点进行选品并提高销售潜力?

在如今的电商市场中&#xff0c;选品是卖家们提高销售业绩的重要环节。对于在Shopee深圳站点进行选品的卖家来说&#xff0c;了解市场需求、分析竞争对手、优化供应链管理、制定合理的价格策略以及精准的营销策略都是至关重要的。本文将为您介绍一些关键策略&#xff0c;帮助您…