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,一经查实,立即删除!

相关文章

flutter 嵌套 StatefulWidget 不刷新

widget1 中有一个按钮和 widget2 , 点击一次按钮 数字i1,调用 widget2(i); widget1 widget2 都是 StatefulWidget import package:flutter/material.dart; import package:stack_trace/stack_trace.dart; import dart:developer as dev;void main() {runApp(MaterialApp(tit…

单例模式如何实现?

单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问这个唯一实例。在 C 中&#xff0c;可以通过将构造函数设为私有&#xff0c;并提供一个静态方法来获取或创建类的实例来实现单例模式。 下面是一个简单的 C 单例模式的…

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;函…

学习Vue3中reactive

学习Vue3中reactive 一、前言1、响应式对象2、对象属性的访问3、嵌套响应式对象4、避免直接修改响应式对象5、ref vs reactive 一、前言 在 Vue 3 中&#xff0c;reactive 是一个用于创建响应式对象的函数。响应式对象是 Vue 3 中数据驱动视图的核心&#xff0c;它们的属性的变…

redis的双写一致性

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

代码随想录训练营Day26:贪心算法:04

1.860柠檬水找零 贪心策略&#xff1a;先找大钱&#xff0c;再找小钱&#xff0c;20的不参与找钱 思路&#xff1a;用five,ten存放5元和10元的个数&#xff0c;初始化都是0&#xff0c;如果给的钱是5元&#xff0c;直接five,如果给的是10元&#xff0c;只能找5&#xff0c;判…

音视频入门基础:像素格式专题(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日 一稿 数据元素+数据项 逻辑结构 集合 线性结构 树形结构 </

SGP.02-v4.2-001

2.4 OTA Communication on ES5 (SM-SR-eUICC) 2.4.3 SMS 在eUICC&#xff08;嵌入式通用集成电路卡&#xff09;远程配置和管理系统中&#xff0c;OTA&#xff08;空中传输&#xff09;通信由SM-SR&#xff08;订阅管理-服务器&#xff09;专门处理。SM-SR可以使用短信&…

chromium添加一个书签项,并自动显示图标

添加一个书签很简单&#xff1a; BookmarkModel* model BookmarkModelFactory::GetForBrowserContext(browser->profile()); const bookmarks::BookmarkNode* node bookmarks::AddIfNotBookmarked(model, url, title); 两句话即可。麻烦的是怎么设置完书签以后还要显示…

php开发的知识付费系统,教育机构如何实现快速招生呢?

如今教育培训市场的竞争越来越激烈&#xff0c;很多机构管理者会抱怨自己机构所在地竞争力太强&#xff0c;生源太少。想要突破机构的招生瓶颈&#xff0c;机构管理者应该如何快速招生呢? 一、无硝烟的战争—地推 校长们&#xff0c;你们知道吗? 如今互联网技术一流的阿里巴巴…

洛谷 P3809:后缀排序 ← 后缀数组

【题目来源】https://www.luogu.com.cn/problem/P3809【题目描述】 读入一个长度为 n 的由大小写英文字母或数字组成的字符串&#xff0c;请把这个字符串的所有非空后缀按字典序&#xff08;用 ASCII 数值比较&#xff09;从小到大排序&#xff0c;然后按顺序输出后缀的第一个字…

【驱动】SPI

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

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

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