什么是 Web API

Web API 是指网页服务器或者网页浏览器的应用程序接口。简单来讲,就是我们在编写 JavaScript 代码时,可以通过 Web API 来操作 HTML 网页和浏览器。

Web API 又可以分为两类:

  • DOM(文档对象模型)
  • BOM(浏览器对象模型)

DOM(Document Object Model),即文档对象模型,主要用来呈现以及与 HTML 或 XML 文档交互的 API。说白了就是用来操作网页内容,实现各种特效,让用户用起来更顺手。

再来看看 DOM 树的概念,DOM 树又叫文档树,指的是将 HTML 文档以树状结构直观呈现出来,从而将 HTML 中标签与标签之间的关系直观体现出来。

我们都知道 HTML 页面中包含了许多标签,而 DOM 对象就是浏览器根据这些标签所生成的 JavaScript 对象。通过这个对象,我们就可以找到标签的各种属性,而通过修改这个对象的属性的结果也会映射到 HTML 页面中标签中。也就是说,通过修改 JavaScript 中的对象属性,我们就能够改变对象对应 HTML 中的标签属性。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>DOM</title></head><body><button>点击</button><script>// 获取 JavaScript 对象let btn = document.querySelector('button');// 打印所有属性console.dir(btn);// 修改对象属性btn.innerText = '村雨遥';</script></body>
</html>


可以看到原本 button 标签的属性 innerText 从原先的点击变成了 村雨遥,说明通过修改 JavaScript 对象属性从而改变 HTML 中标签属性的目的达到了。

DOM 对象获取

  1. 匹配的首个元素
    上一小节实例中我们其实已经获取过相关 DOM 对象了,也就是以下这一句:
let btn = document.querySelector('button');

这其实是通过 CSS 选择器来获取的我们网页中的标签,通过以下语法,我们将会从网页中选择到匹配的第一个元素。

document.querySelector('CSS 选择器');

其中的参数包含了一个或多个有效的 CSS 选择器字符串,然后返回的结果就是匹配到的 CSS 选择器中的第一个元素,是一个 HTMLElement 元素。当然,如果没有匹配到任何元素,则返回 null

以下是一个获取 DOM 对象的实例。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>DOM 元素获取</title></head><body><div>DOM 元素获取</div><script>// 获取 js 元素let div = document.querySelector('div');console.log(div);</script></body></html>

  1. 匹配的多个元素

之前我们已经学习了如何获取匹配的首个元素,但是在日常开发中,我们常常需要获取匹配到的多个元素,此时我们就可以使用如下语法来获取匹配的多个元素。

document.querySelectorAll('CSS 选择器');
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>DOM 元素获取</title></head><body><div>DOM 元素获取1</div><div>DOM 元素获取2</div><script>// 获取 js 元素let div = document.querySelectorAll('div');console.log(div);</script></body></html>

除开上述两种获取 DOM 对象之外,还提供了一些用于获取 DOM 元素的方法。最常见的几种总结如下:

  • 根据 id 获取一个元素
document.getElementById('id 元素名');
  • 根据标签获取页面中的一类元素
document.getElementsByTagName('标签名');
  • 根据类名获取页面中的元素
document.getElementsByClassName('类名')

以下是一个分别利用上述方法来获取页面中 DOM 元素的实例。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>DOM 元素获取</title></head><body><div id="id1">DOM 元素获取1</div><div id="id2">DOM 元素获取2</div><div class="class1">DOM 元素获取3</div><div class="class1">DOM 元素获取4</div><script>// 获取 js 元素let divs = document.getElementsByTagName('div');console.log(divs);let id1 = document.getElementById('id1');console.log(id1);let id2 = document.getElementById('id2');console.log(id2);let classes = document.getElementsByClassName('class1');console.log(classes);</script></body></html>

DOM 元素内容

既然已经学会了如何获取 DOM 元素,接下来就是看看如何修改元素中的内容。

这里 Web API 主要提供了三种方式,分别是:

  • document.write()
  • innerText 属性
  • innerHTML 属性

doucument.write()

该方法只能将文本内容追加到 </body> 标签前面的位置,而且文本内容中所包含的标签也同样会被解析。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>DOM 元素内容</title></head><body><script>document.write('公众号:村雨遥!</br>');document.write("<font color='red'>wePublic: cunyu1943</font>");</script></body>
</html>

innerText 属性

通过该属性,可以将文本内容添加或者更新到任意标签的位置,而且文本中的标签也不会被解析。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>DOM 元素内容</title></head><body><div>测试</div><script>let div = document.querySelector('div');div.innerText = 'Hello World!';div.innerText = '<h1>一级标题</h1>';</script></body>
</html>

innerHTML 属性

除了 innerText 属性之外,也可以是使用 innerHTML 属性来对文本内容进行添加或者更新,但不同于 innerText 的是,innerHTML 会将文本内容中中的标签也进行解析。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>DOM 元素内容</title></head><body><div>测试</div><script>let div = document.querySelector('div');div.innerHTML = 'Java Park!';div.innerHTML = '<a href="https://cunyu1943.github.io/JavaPark">JavaPark</a>';</script></body>
</html>

修改元素样式属性

出了修改文本内容,我们还可以实现对元素样式的控制,主要可以通过以下三种方式:

  • 通过 style 属性操作 CSS
  • 通过类名 className 操作 CSS
  • 通过 classList 操作类控制 CSS
  1. 通过 style 属性操作 CSS

语法结构如下:

对象.style.样式属性 = 样式属性值;
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>属性修改</title><style>div {background-color: black;width: 6.25rem;height: 12.5rem;}</style></head><body><div></div><script>let div = document.querySelector('div');div.style.backgroundColor = 'green';</script></body>
</html>

  1. 通过类名 className 操作 CSS

当设计修改的样式较多时,如果直接通过 style 属性修改比较麻烦,此时就可以通过操作 CSS 类名的方式来进行批量修改,其语法结构如下:

元素.className = '类名';
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>属性修改</title><style>div {background-color: black;width: 6.25rem;height: 12.5rem;}.demo {background-color: greenyellow;width: 25rem;height: 31.25rem;}</style></head><body><div class="demo"></div><script>let div = document.querySelector('div');div.className = 'demo';</script></body>
</html>

使用类名来操作 CSS 时,需要注意一下,如果原先的元素中已经有了 CSS 类,那么此时新增的 CSS 类将覆盖之前 CSS 类。

  1. 通过 classList 来操作 CSS

针对通过类名 className 操作 CSS 会覆盖以前类名的问题,JavaScript 中又提供了 classList 的方式来追加和删除类名。

方法 说明
add('类名') 追加一个类
remove('类名') 删除一个类
toggle('类名') 切换一个类
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>属性修改</title><style>div {background-color: black;width: 6.25rem;height: 12.5rem;}.demo1 {background-color: greenyellow;width: 10rem;height: 15rem;}.demo2 {background-color: aquamarine;width: 9.375rem;height: 12.5rem;}</style></head><body><div class="demo"></div><script>let div = document.querySelector('div');div.classList.add('demo1');div.classList.toggle('demo2');div.classList.remove('demo2');</script></body>
</html>

总结

本文首先讲了什么是 Web API,然后根据 Web API 所提供的各种方法,从页面中获取 DOM 对象,并对 DOM 对象中的元素内容进行设置和修改。

主要内容集中在常用的 DOM 对象获取方法 querySelector()querySelectorAll(),以及 DOM 元素内容 3 种修改方式 document.write()innerTextinnerHTML ,最后介绍了如何对 DOM 元素的样式修改,实现样式的增加、转换和删除。

JavaScript 教程「9」:DOM 元素获取、属性修改相关推荐

  1. JavaScript 教程「1」:与君初相识

    什么是 JavaScript 作为世界上最流行的语言之一,是一种运行在客户端的脚本语言.而所谓脚本语言,就是不需要编译就能运行的编程语言,JavaScript 在运行过程中通过 JS 解释器来逐行解释 ...

  2. JavaScript 教程「3」:数据类型

    导读 初步了解 JavaScript 之后,我们又学习了注释.输入输出以及变量的相关知识.本文紧接上两部分,来继续带领大家学习 JavaScript 中的数据类型知识,本文主要内容如下: 数据类型简介 ...

  3. JavaScript 教程「6」:数组

    什么是数组 之前的学习中,如果我们要存储一个值,一般都是通过变量来存储.但如果我们现在想要存储一系列的值,又该如何存储呢,你可能会说可以用多个变量来进行存储.这种方法也可以,但如果你想,一旦值过多,那 ...

  4. JavaScript 教程「2」:注释、输入输出、变量

    注释 为了提高代码的可读性,我们往往需要在代码中添加一些额外的信息,但是我们又不想让这些信息影响到代码的执行.这时候,我们就需要使用到注释.JavaScript 中,主要有两种注释,一种是单行注释,另 ...

  5. 减少DOM的获取与修改次数

    面试官经常会问你:"平时工作中,你怎么优化自己应用的性能?" 你回答如下:"我平时遵循以下几条原则来优化我的项目.以提高性能,主要有:" a. 减少DOM操作的 ...

  6. js基础总结——js 获取元素节点、js 绑定onclick事件、js 获取属性 修改属性值、js 获取子元素、js 改变css样式

    参考书籍:<JavaScript DOM编程艺术 第2版> 本博客代码的测试页面是:https://www.layui.com/ js dom操作 js 获取元素节点 一份document ...

  7. MooTools教程(3):数组管理DOM元素

    篇教程--<Mootools 1.2教程(2)--DOM选择器>中,我们介绍了一下选择器,其中有很多方法就会返回数组(一个你可以对其中内容进行多种操作的特殊列表).今天,我们在来看看如何使 ...

  8. Ps 初学者教程「70」如何轻松灵活地为作品上色?

    欢迎观看 Photoshop 教程,小编带大家了解如何使用 ps 中的填充图层,尝试各种颜色选择并无损地编辑颜色. 我们的书籍封面设计在单独的命名层上具有三个元素:椅子.砖墙和图案.使用填充图层为设计 ...

  9. Ps 初学者教程「52」如何更改照片中的天空颜色?

    欢迎观看 Photoshop 教程,小编带大家了解如何使用混合颜色带将照片中的阴暗天空替换为更漂亮的天空. 这里有两张图片,要替换天空,需要使用「混合颜色带」滑块,它位于「图层样式」对话框中.在开始之 ...

最新文章

  1. 使用git提交到github,每次都要输入用户名和密码的解决方法
  2. 转载:逻辑思维提升表达
  3. redis 哨兵_docker里创建redis哨兵
  4. 马云、马斯克同台谈AI:人工智能拯救世界?
  5. 如何学STM32 —— 十年经验教你如何学习嵌入式系统
  6. Vue项目 全局定义日期时间方法处理
  7. mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...
  8. 使用ffmpeg进行图像格式转换以及图像缩放/sws_scale/linux/c++/c/rgb-yuv420
  9. 【原】web服务器占有量统计等 web网站
  10. Python3.x中的三目运算实现方法
  11. RSS导入功能已完成
  12. python中格式化输出_python如何实现格式化输出
  13. 2021年第十八届五一数学建模竞赛题目 C题 数据驱动的异常检测与预警问题 解题论文完整版
  14. android 查看cad方案,android 加载dwg 图纸解决方案
  15. WPS、EXCEL中输入公式F4插入绝对引用无反应的解决方法
  16. 收藏!2020上半年社区精华教程盘点
  17. Docker知识点总结
  18. IDEA tomcat中deployment点击+号没有出现artifcat
  19. PHP+HTML 实现blob链接视频播放
  20. 计算机考试试卷怎么做,雨课堂怎么新建试卷 雨课堂制作试题的方法

热门文章

  1. 大学的计算机证书,大学必拿的几个证书是什么?
  2. Linux性能优化 Linux性能工具:CPU top
  3. 与、或、非、异或,运算符巩固
  4. poj 2404 Jogging Trails
  5. java 获取mp3 封面_android 怎样获取歌曲的专辑封面
  6. python抓取网站88titienmae88中的“图片区”所有图片
  7. 如何使用TestFlight进行Beta测试
  8. iPhone用android充电头,安卓充电器也可以给iPhone 12快充!
  9. java后台程序员转android 之《三B》 支付宝支付 client join server 及采坑记录
  10. 代理插件SwitchyOmega安装配置