WebAPI

153 阅读4分钟

作用和分类

  • 作用:可以使用js去操作HTML和游览器
  • 分类:DOM(文档对象模型)、BOM(游览器对象模型)

示意图:

Snipaste_2021-11-13_12-16-42.png

DOM文档对象模型

定义:DOM(Document Object Model——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API

简而言之:DOM是游览器提供的一套专门用来操作网页内容的功能

DOM作用

操作网页内容特效和实现用户交互

DOM树

  • 讲HTML文档以树状结构直观的表现出来,称之为文档树或DOM树
  • 描述网页内容关系的名词
  • 作用:文档树直观的体现了标签与标签之间的关系

示意图:

Snipaste_2021-11-13_12-36-20.png

结构:

<!DOCTYPE html>
<html lang="en"><head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>标题</title>
</head><body>
    文本
    <div></div>
    <a href="#">链接</a>
    <p>文本框</p>
</body></html>

DOM对象*

  1. DOM对象:游览器根据html标签生成的js对象

    • 所有的标签属性都可以在这个对象上找到
    • 修改之歌对象的属性会自动映射到标签身上
  2. DOM的核心思想

    • 把网页内容当做对象使用
  3. document对象

    • 是DOM里提供的一个对象
    • 所以它提供的属性和方法都是用来访问和操作网页内容的
    • 例:document.write()
      
    • 网页的所有内容都在document里面
获取DOM对象

根据css选择器获取DOM元素*

语法:

document.querySelectorAll('css选择器')

获取一个DOM元素:

document.querySelector()

参数:

包含一个或多个有效的css选择器字符串

document.querySelector('p')//获取第一个p标签
document.querySelector('.myclass')//获取类名为.myclass的第一个标签
document.querySelector('#myId')//获取ID为#myId的元素

返回值:

css选择器匹配的NodeList对象集合

例:document.querySelectorAll('ul li')

用document.querySelectorAll('css选择器')

得到的是一个伪数组

  • 有长度(length)有索引的数组
  • 但没有数组方法如pop()、push()

想要得到里面的每一个对象,则需要遍历(如 for)的方式获得

其他获取DOM元素的方法(旧)

//根据id获取
document.getElementById('nav')
// 根据标签获取一类元素
document.getElementsByTagName('div')
// 根据类名获取元素
document.getElementsByClassName('nav')
修改DOM元素
  • document.write() 方法
  • 对象.innerText 属性
  • 对象.innerHTML 属性

document.write() 方法

  • 只能将文本内容追加到 前面的位置
  • 文本中包含的标签会被解析
document.write('str')
document.write('<h3>str</h3>')

对象.innerText 属性

  • 将文本内容添加/更新到任意标签位置
  • 文本中包含的标签不会被解析
 document.querySelector('ul').innerText = '<li>我的首页</li>'

对象.innerHTML 属性

  • 将文本内容添加/更新到任意标签位置
  • 文本中包含的标签会被解析
 document.querySelector('ul').innerHTML = '<li>我的首页</li>'

案例:随机抽取的名字显示到指定的标签内部

 抽中的选手:<span></span><script>
//名册
let name = ['飞哥', '谷歌', '胡歌', '胡哥']
//总人数下生成随机数
let ran = parseInt(Math.random() * name.length)
//幸运选手
let lick = name[ran]
//通过innerText将幸运选手写入元素内部
document.querySelector('span').innerText = lick
</script>
修改DOM元素属性
  • 可以通过 JS 设置/修改标签元素属性,比如通过 src更换 图片
  • 最常见的属性比如: href、title、src 等

语法:

对象.属性 = 值

  1. 对象必须是dom元素
  2. 属性必须是内置属性
  3. 值必须是合理的值,如果有单位必须带单位,值是字符串必须加引号
let pic = document.querySelector('img')
pic.src = './images/b02.jpg'
pic.title = '这是一个图片'

案例:页面刷新,图片随机更换

<img src="" alt="">
    <script>
        //图片链接数组
        let imgSrc = ['./img/1.jpg', './img/2.jpg', './img/3.jpg', './img/4.jpg']
        let ran = parseInt(Math.random() * imgSrc.length)
        //获取img标签并把添加src属性
        document.querySelector('img').src = imgSrc[ran]
    </script>
修改元素样式属性

通过 JS 设置/修改标签元素的样式属性

如:

轮播图小圆点自动更换颜色样式

点击按钮可以滚动图片,这是移动的图片的位置 left 等等

方法:

  1. 通过 style 属性操作CSS
  2. 操作类名(className) 操作CSS
  3. 通过 classList 操作类控制CSS

通过 style 属性操作CSS

语法:

对象.style.样式属性 = 值

对象.style['样式属性'] = 值

例:

let box = document.querySelector('.box')
​
//修改背景颜色
box.style.backgroudColor = 'red'
//修改宽度
box.style.width = '300px'
//修改外边距
box.style.margin = '10px'

注意:

  1. 修改属性通过style引出
  2. 如果属性有 - 连接符,需要转换为小驼峰命名法。但采用对象.style['样式属性'] = 值不需要转换
  3. 赋值需要加上css单位

案例:当我们刷新页面,页面中的背景图片随机显示不同的图片

let imgSrc = ['./img/1.jpg', './img/2.jpg', './img/3.jpg', './img/4.jpg']
  let bodyBackScr = imgSrc[ran]
        console.log(bodyBackScr);
        document.body.style.backgroundImage = `url(${bodyBackScr})`

操作类名修改css

语法:元素.className = “active”

注意:className是使用新值换旧值, 如果需要添加一个类,需要保留之前的类名

通过classList操作类控制css

className是使用新值换旧值, 如果需要添加一个类,需要保留之前的类名

语法:

//追加一个类
元素.classList.add('类名')
//删除一个类
元素.classList.remove('类名')
//切换一个类
元素.classList.toggle('类名')
修改表单属性

语法:

表单.value = ‘用户名’
表单.type = ‘password’

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