DOM获取及属性操作

149 阅读3分钟

1. 对const的简单理解

用const声明的值不能更改,对于简单数据类型我们都知道存的值放到了栈里面,但是对于引用数据类型,比如数组和对象,则const声明的变量里面存的不是值,而是地址,值存到了栈里面,只要地址不变,值的增加减少都不会报错。如下图所示:

image.png

2. DOM对象

浏览器根据html标签生成的js对象(DOM对象),其核心就是把内容都当做对象来处理。

2.1 获取DOM元素的常见的方法

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

返回值为CSS选择器匹配到的第一个元素,没有就返回null

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

返回值为CSS选择器匹配的数组对象集合,如果我们想要求集合里的具体某个对象或者所有对象,需要遍历,然后给里面的元素进行修改。要注意: 通过此语法得到的是一个伪数组。有长度和索引号 但是没有数组的相关操作方法。代码和结果如下图:

<body>
  <ul class="nav">
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
  <script>
    const list = document.querySelectorAll('.nav li')
    console.log(list)
  </script>
</body>

image.png

两个比较特殊的元素获取:

document.body 获取body标签; document.documentElement 获取html标签

2.2 操作元素内容 和 元素属性

由于DOM对象都是根据标签生成的,所以操作标签本质上就是操作DOM对象。

修改标签元素里面的内容有2种方式:

  1. 对象.innerText 属性
  2. 对象.innerHTML 属性

两者的区别是

元素.innerText 属性 只识别文本,不能解析标签

元素.innerHTML 属性 能识别文本,能够解析标签

操作元素属性

①元素常用属性: herf src title id alt等

这类的可直接通过属性名修改。对象.属性 = 值

<script>
// 获取元素
const img = document.querySelector('img')
// 修改图片路径
img.src = './images/01.webp'
</script>

操作样式属性

-通过style属性操作CSS

对象.style.样式属性 = 值, 如果属性有-连接符,需要转换为小驼峰命名法如:

div.style.backgroundColor = 'red' 这种方式生成的属性是行内样式表,权重比较高。

-通过className操作CSS

当修改的样式比较多的时候可以采用这个方式。 具体操作就是在style样式里写一个类名,类里面包含好多属性,我们想调用这个属性的时候,直接对象.className = '类名' 即可。缺点就是多个类名操作麻烦,而且后面的类名会覆盖前面的类名。

- 通过classList操作CSS

为了解决className 容易覆盖以前的类名,可以采用这个方式。

包括三个方法

添加类:对象.classList.add()

移除类:对象.classList.remove()

切换类,有则移除,无则添加:对象.classList.remove()

操作表单元素属性

属性 value disabled checked selected

<body>
  <input type="text" value='小米粒' class = "t">
  <button disabled>按钮</button>
  <input type="checkbox" name="" id="" class="agree">
  
  <script>
  // 获取元素
    const inp = document.querySelector('.t')
    // 1. 修改
    inp.value = '小米粒你好啊'
    inp.type = 'password'
    
    // 2. 启用按钮
    const btn = document.querySelector('button')
    //  disabled disabled 不可用
    // 取消禁止
     btn.disabled = false
     
     // 3. 复选框
     const checkbox = document.querySelector('.agree')
     // 不勾选
        checkbox.checked = false
  </script>
</body>

自定义属性

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

<!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>Document</title>
</head>

<body>
  <a href="#" data-la="index"></a>
  <script>
    // 获取元素
    const a = document.querySelector('a')
    // 修改元素
    a.dataset.la = '大道不该如此之小'
    console.log(a);
  </script>
</body>

</html>

定时器-间歇函数

开启定时器语法:

setInterval(函数名, 间隔时间) 间隔时间单位是毫秒。

关闭定时器语法:

clearInterval(标识名)

在创建定时器的时候,浏览器会自动给这个定时器返回一个数字标识。不同的浏览器返回的值不同,所以我们这里可以设置一个定时器标识,便于关闭定时器。

<!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>Document</title>
</head>

<body>
  <script>
    // 定时器  这里的n就可以理解为定时器标识
    let n = setInterval(function () {
      console.log('陈平安 和宁姚 阮秀');
    }, 1000)
    //console.log(n);
    // 关闭定时器
    clearInterval(n)
  </script>
</body>

</html>