JavaScript APIs

控制网页元素交互等各种网页交互效果。

一、Web API基本认知

声明数组和变量优先使用const

使用let声明变量的情况:

1、如果基本数据类型的值或者引用类型的地址发生变化的时候,需要用let

2、比如 一个变量进行加减运算,比如 for循环中的 i++

  • 作用和分类

作用:就是使用 JS 去操作 html和浏览器

分类:DOM(文档对象模型)、BOM(浏览器对象模型)

  • 什么是DOM

DOM (Document Object Model -- 文档对象模型) 是用来呈现以及与任意 HTML 或 XML文档交互的API。它是浏览器提供的一套专门用来操作网页内容的功能。

DOM作用:开发网页内容特效和实现用户交互

  • DOM树

将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树

描述网页内容关系的名词

作用:文档树直观的体现了标签与标签之间的关系

  • DOM对象

DOM对象:浏览器根据html标签生成的JS对象
所有的标签属性都可以在这个对象上面找到,修改这个对象的属性会自动映射到标签身上

DOM的核心思想:把网页内容当作对象来处理。

document 对象:
是 DOM 里提供的一个对象,所以它提供的属性和方法都是用来访问和操作网页内容的,网页所有内容都在document里面。


二、获取DOM对象

  • 根据CSS选择器来获取DOM元素(重点)

目标:能查找/获取DOM对象(就是利用JS页面中的标签元素)

1、选择匹配的第一个元素

语法:document.querySelector( 'css选择器' )

参数:包含一个或多个有效的CSS选择器字符串

返回值:CSS选择器匹配的第一个元素,一个 HTMLElement对象。如果没有匹配到,则返回null。

2、选择匹配的多个元素

语法:document.querySelectorAll( 'css选择器' )

参数:包含一个或多个有效的CSS选择器字符串

返回值:CSS选择器匹配的NodeList对象集合

得到的结果是一个伪数组:有长度有索引号的数组,但是没有pop()、push()等数组方法,想要得到里面的每一个对象,则需要遍历(for)的方式获得。

<ul class="nav"><li>测试1</li><li>测试2</li><li>测试3</li>
</ul>
<script>const lis=document.querySelectorAll('.nav li')for(let i=0;i<lis.length;i++){console.log(lis[i])}
</script>
  • 其他获取DOM元素方法(了解)


三、操作元素内容

  • 对象.innerText属性

将文本内容添加/更新到任意标签位置

显示纯文本,不解析标签

  • 对象.innerHTML属性(常用)

将文本内容添加/更新到任意标签位置

解析标签,多标签建议使用模板字符


四、操作元素属性

  • 操作元素常用属性

还可以通过JS设置/修改标签元素属性,比如通过src更换图片,最常见的属性比如:herf\title\src等。

语法:对象.属性 = 值

  • 操作元素样式属性

1、通过style属性操作CSS

设置或修改元素样式属性

语法:对象 . style . 样式属性 = 值

2、操作类名(className)操作CSS

如果修改的样式比较多,直接通过style属性修改比较繁琐,我们可以借助CSS类名的形式。

语法:元素 . className = 'active'

注意:由于class是关键字,所以使用className去代替;className是使用新值换旧值,如果需要添加一个类,需要保留之前的类名。

3、通过classList操作类控制CSS

为了解决className容易覆盖以前的类名,通过classList方式追加和删除类名。

语法:

  • 操作表单元素属性

表单很多情况,也需要修改属性,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框。正常的有属性有取值的,跟其他的标签属性没有任何区别。

获取:DOM对象 . 属性名

设置:DOM对象 . 属性名 = 新值

<body><input type=text" value="电脑"><script>const uname=document.querySelector('input') #获取元素uname.value='我要买电脑'</script>
</body>

表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示 如果为true 代表添加了该属性 如果是false 代表移除了该属性,比如:disabled、checked、selected。

<script>const ipt=document.querySelector('input') #复选框ipt.checked=true
</script>
  • 自定义属性

标准属性:标签天生自带的属性 比如class id title等,可以直接使用点语法操作比如: disabled、checked、selected.

自定义属性:
在html5中推出来了专门的data-自定义属性
在标签上一律以data-开头
在DOM对象上一律以dataset对象方式获取


五、定时器 - 间歇函数

  • 介绍

网页中经常会遇到每隔一段时间需要自动执行一段代码,不需要我们手动去触发,例如网页中的倒计时,要实现这种需求,需要定时器函数。

  • 定时器 - 间歇函数

目标:能够使用定时器函数重复执行代码,定时器函数可以开启和关闭定时器。

1、开启定时器

setInterval(函数,间隔时间)

作用:每间隔一段时间就调用这个函数,间隔单位是毫秒。

<script>setInterval(function(){console.log('一秒钟执行一次')},1000)
</script>
<script>function fn(){console.log('一秒执行一次')}setInterval(fn, 1000)
</script>

注意:

函数名字不需要加括号

返回的是一个id数字

2、关闭定时器

let 变量名 = setInterval(函数,间隔时间)

clearInterval(变量名)

一般不会刚创建就停止,而是满足一定条件再停止

例子:

需求:按钮60秒之后才可以使用

分析:

开始把按钮禁用

一定要获取元素

函数处理逻辑,秒数开始减,按钮里面的文字跟着一起变化,如果秒数等于0停止定时器,里面的文字变为“同意”,最后按钮可以点击

<body><button class="btn" disabled>我已经阅读用户协议(60)</button><script>const btn=document.querySelector('.btn')let i=5let n=setInterval(function(){i--btn.innerHTML='我已经阅读用户协议(${i})'if(i==0) {clearInterval(n)btn.disabled=falsebtn.innerHTML='同意'}},1000)</script>
</body>

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

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

相关文章

Linux日常管理和服务器配置(二)

一、在系统中配置FTP服务器&#xff1a; 准备工作&#xff1a; a.下载ftp命令 sudo apt install vsftpd 可以先用命令更新一下库 sudo apt-get update 接着输入 systemctl status vsftpd 检查ftp运行状态 然后进入vsftpd.conf文件中修改write为 vim /etc/vsftpdf.conf …

深入理解指针(1)

在之前我们学习了许多c语言的基础知识&#xff0c;让我们初步了解了c语言&#xff0c;接下来将来到c语言中一个重点的知识章节--指针&#xff0c;学习完指针后将会让我们对c语言有更深入的理解&#xff0c;接下来就开始指针的讲解 1.内存与地址 1.指针 在了解内存与地址前&am…

vue开发网站—①调用$notify弹窗、②$notify弹窗层级问题、③js判断两个数组是否相同等。

一、vue中如何使用vant的 $notify&#xff08;展示通知&#xff09; 在Vue中使用Vant组件库的$notify方法来展示通知&#xff0c;首先确保正确安装了Vant并在项目中引入了Notify组件。 1.安装vant npm install vant --save# 或者使用yarn yarn add vant2.引入&#xff1a;在ma…

词令蚂蚁新村今日答案:微信小程序怎么查看蚂蚁新村今天问题的正确答案?

微信小程序怎么查看蚂蚁新村今天问题的正确答案&#xff1f; 1、打开微信&#xff0c;点击搜索框&#xff1b; 2、打开搜索页面&#xff0c;选择小程序搜索&#xff1b; 3、在搜索框&#xff0c;输入词令搜索点击进入词令微信小程序&#xff1b; 4、打开词令微信小程序关键词口…

Python专题:九、元组

append&#xff08;&#xff09;函数添加列表元素 remove&#xff08;&#xff09;函数移除列表元素 数据存储知识 变量保存的就是数据在内存中的地址 id()函数查看变量存储地址 动态分配 内存地址是动态分配的&#xff0c;每次的数值不一致 copy&#xff08;&#xff09;函…

redis的双写一致性

双写一致性问题 1.先删除缓存或者先修改数据库都可能出现脏数据。 2.删除两次缓存&#xff0c;可以在一定程度上降低脏数据的出现。 3.延时是因为数据库一般采用主从分离&#xff0c;读写分离。延迟一会是让主节点把数据同步到从节点。 1.读写锁保证数据的强一致性 因为一般放…

音视频入门基础:像素格式专题(2)——不通过第三方库将RGB24格式视频转换为BMP格式图片

音视频入门基础&#xff1a;像素格式专题系列文章&#xff1a; 音视频入门基础&#xff1a;像素格式专题&#xff08;1&#xff09;——RGB简介 音视频入门基础&#xff1a;像素格式专题&#xff08;2&#xff09;——不通过第三方库将RGB24格式视频转换为BMP格式图片 一、引…

AI领域最伟大的论文检索网站

&#x1f4d1; 苏剑林&#xff08;Jianlin Su&#xff09;开发的“Cool Papers”网站旨在通过沉浸式体验提升科研工作者浏览论文的效率和乐趣。这个平台的核心优势在于利用Kimi的智能回答功能&#xff0c;帮助用户快速了解论文的常见问题&#xff08;FAQ&#xff09;&#xff0…

基于Qt的Model-View显示树形数据

目标 用qt的模型-视图框架实现树型层次节点的显示&#xff0c;从QAbstractItemModel派生自己的模型类MyTreeItemModel&#xff0c;用boost::property_tree::ptree操作树型数据结构&#xff0c;为了演示&#xff0c;此处只实现了个只读的模型 MyTreeItemModel的定义 #pragma o…

数据结构(一)绪论

2024年5月11日 一稿 数据元素+数据项 逻辑结构 集合 线性结构 树形结构 </

【驱动】SPI

1、简介 SPI(Serial Peripheral interface)串行外设接口。 特点: 高速:最大几十M,比如,AD9361的SPI总线速度可以达到40MHz以上全双工:主机在MOSI线上发送一位数据,从机读取它,而从机在MISO线上发送一位数据,主机读取它一主多从:主机产生时钟信号,通过片选引脚选择…

详解Python测试框架Pytest的参数化

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 上篇博文介绍过&#xff0c;Pytest是目前比较成熟功能齐全的测试框架&#xff0c;使用率肯定也不…

Coursera吴恩达深度学习专项课程01: Neural Networks and Deep Learning 学习笔记 Week 03

Neural Networks and Deep Learning Course Certificate 本文是学习 https://www.coursera.org/learn/neural-networks-deep-learning 这门课的笔记 Course Intro 文章目录 Neural Networks and Deep LearningWeek 03: Shallow Neural NetworksLearning Objectives Neural Ne…

13.Netty组件EventLoopGroup和EventLoop介绍

EventLoop 是一个单线程的执行器&#xff08;同时维护了一个Selector&#xff09;&#xff0c;里面有run方法处理Channel上源源不断的io事件。 1.继承java.util.concurrent.ScheduledExecutorService因此包含了线程池中所有的方法。 2.继承netty自己的OrderedEventExecutor …

华为数据之道第三部分导读

目录 导读 第三部分 第7章 打造“数字孪生”的数据全量感知能力 “全量、无接触”的数据感知能力框架 数据感知能力的需求起源&#xff1a;数字孪生 数据感知能力架构 基于物理世界的“硬感知”能力 “硬感知”能力的分类 “硬感知”能力在华为的实践 基于数字世界的…

快递物流查询:如何实现快递批量查询?这些技巧助你轻松应对

在日常生活和工作中&#xff0c;我们经常需要查询快递物流信息&#xff0c;尤其是当面对大量的快递包裹时&#xff0c;逐一查询无疑会耗费大量的时间和精力。这时&#xff0c;实现快递批量查询就显得尤为重要。本文将为你介绍办公提效工具一些实现快递批量查询的技巧&#xff0…

如何将draw.io的图导入word

解决办法&#xff08;有点点复杂&#xff09; 先在http://draw.io导出格式为svg矢量图格式&#xff0c;然后用visio打开svg&#xff0c;调整完界面等等之后再保存&#xff0c;然后在word里面插入visio

Android 13 aosp 默认关闭SELinux

通过adb修改 adb root adb shell setenforce 0 // 开SELinux&#xff0c;设置成模式permissive adb shell setenforce 1 // 关SELinux&#xff0c;设置成模式enforce adb shell getenforce // 获取当前SELinux状态源码修改 Android_source/system/core/init/selinu…

分布式事务技术方案

什么是分布式事务 一次课程发布操作需要向数据库、redis、elasticsearch、MinIO写四份数据&#xff0c;这里存在分布式事务问题。 什么是分布式事务&#xff1f; 首先理解什么是本地事务&#xff1f; 平常我们在程序中通过spring去控制事务是利用数据库本身的事务特性来实现…

Offline: Overcoming Model Bias for Robust Offline Deep Reinforcement Learning

EAAI 2023 paper Intro model-free的离线强化学习由于价值函数估计问题存在训练的稳定性以及鲁棒性较低。本文提出基于模型的方法&#xff0c;同构构建稳定的动力学模型帮助策略的稳定训练。 method 本文基于模型的方法&#xff0c;所构造的转移模型输入状态动作&#xff0…