「写在前面」
本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容:
1. JavaScript 学习笔记(Day1)
2. JavaScript 学习笔记(Day2)
3. JavaScript 学习笔记(Day3)
4. JavaScript 学习笔记(Day4)
5. JavaScript 学习笔记(Day5)
目录
-  
     1 Web APIs 课程安排 
-  
     2 变量声明 
-  
     3 Web API 基本认知 
-  
     4 获取DOM对象 
-  
     5 操作元素内容 
-  
     6 操作元素属性 
-  
     7 定时器-间歇函数 
-  
     8 综合案例 
1 Web APIs 课程安排
P78:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=78
2 变量声明
P79:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=79
变量声明时,用 let 还是 const?
建议:有了变量先给 const,如果发现它后面是要被修改的,再改为 let
-  
   const 声明的值不能更改,而且const声明变量的时候需要里面进行初始化 
-  
   但是对于引用数据类型,const声明的变量,里面存的不是值,是地址。 
 
 
  
 
 3 Web API 基本认知
3.1 作用和分类
P80:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=80
-  
   作用: 就是使用 JS 去操作 html 和浏览器 
-  
   分类: DOM (文档对象模型)、 BOM(浏览器对象模型) 
 
 
 3.2 什么是DOM
DOM(Document Object Model——文档对象模型)是用来呈现以及与任意 HTML 或 XML文档交互的 API
DOM 是浏览器提供的一套专门用来 操作网页内容 的功能
DOM 作用:开发网页内容特效和实现用户交互
3.3 DOM树
DOM树是什么:
-  
   将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树 
-  
   描述网页内容关系的名词 
-  
   作用: 文档树直观的体现了标签与标签之间的关系 
 
 
 3.4 DOM对象
-  
   DOM对象:浏览器根据 html 标签生成的 JS对象 -  
      所有的标签属性都可以在这个对象上面找到 
-  
      修改这个对象的属性会自动映射到标签身上 
 
-  
      
-  
   DOM的核心思想 -  
      把网页内容当做 对象来处理 
 
-  
      
-  
   document 对象 -  
      是 DOM 里提供的一个 对象 
-  
      所以它提供的属性和方法都是 用来访问和操作网页内容的 -  
         例:document.write() 
 
-  
         
-  
      网页所有内容都在 document 里面 
 
-  
      
<body>
  <div>123</div>
  <script>
    const div = document.querySelector('div')
    console.dir(div) // dom 对象
  </script>
</body>
4 获取DOM对象
P81:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=81
4.1 根据CSS选择器来获取DOM元素
1. 选择匹配的第一个元素
语法:
document.querySelector('css选择器')
参数:
-  
   包含一个或多个有效的CSS选择器 字符串 
返回值:
-  
   CSS选择器匹配的第一个元素,一个 HTMLElement对象。 
-  
   如果没有匹配到,则返回null。 
2. 选择匹配的多个元素
语法:
document.querySelectorAll('css选择器')
参数:
-  
   包含一个或多个有效的CSS选择器 字符串 
返回值:
-  
   CSS选择器匹配的 NodeList 对象集合 
得到的是一个伪数组:
-  
   有长度有索引号的数组 
-  
   但是没有 pop() push() 等数组方法 
想要得到里面的每一个对象,则需要遍历(for)的方式获得。
哪怕只有一个元素,通过querySelectAll() 获取过来的也是一个伪数组,里面只有一个元素而已
<body>
  <div class="box">123</div>
  <p id="nav">导航栏</p>
  <ul>
    <li>测试1</li>
    <li>测试2</li>
    <li>测试3</li>
  </ul>
  <script>
    // 1. 获取匹配的第一个元素
    const box = document.querySelector('div')
    const box = document.querySelector('.box')
    const nav = document.querySelector('#nav')
    const li = document.querySelector('ul li:first-child')
    // 2. 选择所有的小li
    const lis = document.querySelectorAll('ul li')
    for (let i = 0; i < lis.length; i++){
    console.log(lis[i])  // 输出每一个小li对象
    }
  </script>
</body>
4.2 其他获取DOM元素方法(了解)
// 根据id获取一个元素
document.getElementById('nav')
// 根据标签获取一类元素,获取页面所有div
document.getElementsByTagName('div')
// 根据类名获取元素,获取页面所有类名为w的
document.getElementsByClassName('w')
5 操作元素内容
P82:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=82
1. 元素 .innerText 属性
-  
   将文本内容添加/更新到任意标签位置 
-  
   显示纯文本, 不解析标签 
2. 元素 .innerHTML 属性
-  
   将文本内容添加/更新到任意标签位置 
-  
   会解析标签,多标签建议使用模板字符 
<body>
  <div class="box">我是文字的内容</div>
  <script>
    // 获取元素
    const box = document.querySelector('.box')
    // 获取标签内部的文字
    console.log(box.innerText)
    // 修改文字内容,不解析标签
    box.innerText = '我是一个盒子'
    // 修改文字内容,解析标签
    box.innerHTML = '<strong>我是一个盒子</strong>'
  </script>
</body>
6 操作元素属性
6.1 操作元素常用属性
P83:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=83
语法:对象.属性 = 值
<body>
  <img src="./images/1.webp" alt="">
  <script>
    // 1. 获取图片元素
    const img = document.querySelector('img')
    // 2. 修改图片对象的属性
    img.src = './images/2.webp'
    img.title = 'pink老师的艺术照'
  </script>
</body>
6.2 操作元素样式属性
P84:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=84
1.通过 style 属性操作CSS
语法:对象.style.样式属性 = 值
<body>
  <div class="box"></div>
  <script>
    // 1.获取元素
    const box = document.querySelector('.box')
    // 2.修改样式属性 对象.styLe.样式属性 = '值' 别忘了跟单位
    box.style.width = '300px'
    // 多组单词的采取 小驼峰命名法
    box.style.backgroundColor = 'hotpink'
    box.style.border = '2px solid blue'
    box.style.borderTop = '2px solid red'
  </script>
</body>
2. 操作类名(className) 操作CSS
P85:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=85
如果修改的样式比较多,直接通过style属性修改比较繁琐,我们可以通过借助于css类名的形式。
语法:
// active 是一个css类名
元素.className = 'active'
注意:
-  
   由于class是关键字, 所以使用 className去代替 
-  
   className是使用新值换旧值, 如果需要添加一个类,需要保留之前的类名 
例:
<head>
  <style>
    .nav {
      color: red;
    }
    
    .box {
      width: 300px;
      height: 300px;
    }
  </style>
</head>
<body>
  <div class="nav"></div>
  <script>
    // 1. 获取元素
    const div = document.quertSelector('div')
    // 2. 添加类名
    div.className = 'nav box'
  </script>
</body>
3. 通过 classList 操作类控制CSS
P86:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=86
为了解决className 容易覆盖以前的类名,我们可以通过classList方式追加和删除类名
语法:
// 追加一个类
元素.classList.add('类名')
// 删除一个类
元素.classList.remove('类名')
// 切换一个类
元素.classList.toggle('类名')
例:
<head>
  <style>
    .box {
      width: 300px;
      height: 300px;
      color: #333;
    }
    
    .active {
      color: red;
      background-color: pink;
    }
  </style>
</head>
<body>
  <div class="box">文字</div>
  <script>
    // 1. 获取元素
    const box = document.quertSelector('.box')
    // 2. 通过classList添加样式,类名不加点,并且是字符串
    // add() 追加类
    box.classList.add('active')
    // remove() 删除类
    box.classList.remove('box')
    // toggle() 切换类,有就删掉,没有就加上
    box.classList.toggle('active')
  </script>
</body>
随机轮播图案例:
P87:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=87
P88:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=88
 
 
 6.3 操作表单元素属性
P89:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=89
-  
   获取: DOM对象.属性名
-  
   设置: DOM对象.属性名 = 新值
例:
<body>
  <input type="text" value="电脑">
  <script>
    // 1. 获取元素
    const uname = document.quertSelector('input')
    // 2. 获表单里面的值
    console.log(uname.value) // 电脑
    console.log(uname.type) // text
    // 3. 设置表单的值
    uname.value = '我要买电脑'
    uname.type = 'password'
  </script>
</body>
-  
   表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示 如果为true 代表添加了该属性 如果是false 代表移除了该属性 
-  
   比如: disabled、checked、selected 
<body>
  <input type="checkbox">
  <script>
    // 1. 获取元素
    const ipt = document.quertSelector('input')
    // 2. 修改属性
    ipt.checked = true // 只接收布尔值,不用字符串
  </script>
</body>
6.4 自定义属性
P90:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=90
-  
   标准属性: 标签天生自带的属性 比如class id title等, 可以直接使用点语法操作比如: disabled、checked、selected 
-  
   自定义属性: -  
      在html5中推出来了专门的data-自定义属性 
-  
      在标签上一律以data-开头 
-  
      在DOM对象上一律以dataset对象方式获取 
 
-  
      
例:
<body>
  <div data-id="1" data-spm="不知道">1</div>
  <div data-id="2">2</div>
  <div data-id="3">3</div>
  <script>
    const one = document.querySelector('div')
    console.log(one.dataset) // {id: '1', spm: '不知道'}
    console.log(one.dataset.id) // 1
</ script>
</ body>
7 定时器-间歇函数
P91:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=91
定时器函数可以开启和关闭定时器
1. 开启定时器
语法:
setInterval(函数, 间隔时间)
-  
   作用:每隔一段时间调用这个函数 
-  
   间隔时间单位是毫秒 
例:
<script>
  setInterval(function () {
    console.log('一秒执行一次')
  }, 1000)
</script>
2. 关闭定时器
语法:
let 变量名 = setInterval(函数, 间隔时间)
clearInterval(变量名)
例:
function fn() {
  console.log('一秒执行一次')
}
// setInterval(函数, 间隔时间),函数名不用加小括号
let n = setInterval(fn, 1000)
// 关闭定时器
clearInterval(n)
P92:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=92
 
 
 8 综合案例
P93:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=93
 
 
  
 
 本文由 mdnice 多平台发布



















