JavaScript(进阶篇)

[复制链接]
发表于 2026-1-26 03:19:05 | 显示全部楼层 |阅读模式

  🌏个人博客主页:心.c


   媒介:本日解说的是JavaScript进阶,盼望各人可以有所劳绩,话不多说,开干!
  🔥🔥🔥文章专题:JavaScript
😽感谢各人的点赞👍收藏⭐️批评✍您的一键三连是我更新的动力 💓 

目次
DOM:
概念: 
DOM 树(由节点构成的条理结构)
获取dom节点:
为dom节点添加删除切换class类:
定时器:
事故: 
1. 鼠标事故
2. 键盘事故
3. 表单事故
键盘监听事故事例: 
事故流:
 事故流的三个阶段
capture参数: 
事故解绑:
冒泡的利益:
克制表单默认提交活动:
页面尺寸事故:
日期对象:
时间戳:
BOM:
location对象:
history对象:
 localStorage对象:

DOM:

概念: 

   DOM(文档对象模子)是一种编程接口,用于HTML和XML文档。它为文档提供了一种结构化的表现,并界说了怎样通过脚本语言(如JavaScript)来访问和利用文档的内容,DOM 把文档视为树形结构(树结构),此中每个节点代表文档的一部分,比方元素、属性或文本。这些节点可以被创建、读取、更新或删除,从而实现对文档内容的动态控制
  DOM 树(由节点构成的条理结构)

节点:


  • 元素节点:代表文档中的HTML或XML元素,如 <div>、<p> 等。
  • 属性节点:代表元素的属性,如 id、class 等。
  • 文本节点:代表元素中的文本内容。
  • 表明节点:代表文档中的表明 / /。
  • 文档节点:代表整个文档。
获取dom节点:

1.获取id名的dom节点:
  1. <body>
  2.   <div id="my_div"></div>
  3.   <script>
  4.     // 1. 获取具有特定ID的元素
  5.     const divById = document.getElementById("my_div");
  6.     const divById_ = document.querySelector('#div');
  7.     console.log(divById); // 输出 <div id="my_div"></div>
  8.     console.log(divById_); // 输出 <div id="my_div"></div>
  9.     // 使用dom元素添加一些样式来突出显示这些元素
  10.     divById.style.backgroundColor = "yellow";
  11.   </script>
  12. </body>
复制代码
2.获取class类名的dom节点:
  1. <body>
  2.   <div class="div"></div>
  3.   <script>
  4.     // 2. 获取具有特定类名的元素
  5.     const divsByClass = document.getElementsByClassName("div");
  6.     const divsByClass_ = document.querySelector('.div');
  7.     //获取所有类名为div的元素
  8.     const divsByClass_ = document.querySelectorAll('.div');
  9.     console.log(divsByClass); // 输出 HTMLCollection[<div class="div"></div>]
  10.     console.log(divsByClass_); // 输出 HTMLCollection[<div class="div"></div>]
  11.     // 使用dom元素添加一些样式来突出显示这些元素
  12.     divsByClass[0].style.backgroundColor = "lightblue";
  13.   </script>
  14. </body>
复制代码
3.得到data-*为名的节点:
data-*为自界说属性
  1. <div data-id="1" data-spm="bzd"></div>
  2. <div data-id="2"></div>
复制代码
  1. <script>
  2.     const one = document.querySelector('div')
  3.     console.log(one.dataset.id)  //1
  4.     console.log(one.dataset.spm)  //bzd
  5. </script>
复制代码

   data-* 属性的定名规则如下:
  

  • 前缀必须是 data-:这是固定的,不能更改。
  • 之后的部分必须由字母、数字、连字符(-)构成:不能包罗空格或其他特殊字符。
  • 不能以数字开头:这是由于HTML属性名称不能以数字开始。
  1. <body>
  2.   <div data-id="1"></div>
  3.   <script>
  4.     // 3. 获取具有特定属性值的元素
  5.     const divByDataId = document.querySelector("[data-id='1']");
  6.     console.log(divByDataId); // 输出 <div data-id="1"></div>
  7.     // 获取所有具有data-id属性的元素
  8.     const divsByDataId = document.querySelectorAll("[data-id='1']");
  9.     console.log(divsByDataId); // 输出 NodeList[<div data-id="1"></div>]
  10.     // 使用dom元素添加一些样式来突出显示这些元素
  11.     divByDataId.style.backgroundColor = "pink";
  12.   </script>
  13. </body>
复制代码
为dom节点添加删除切换class类:

 HTML样式: 
   添加一个类名为box的div节点
  1.   <div class="box">文化</div>
复制代码
CSS样式: 
   给box添加CSS样式,而且再添加一个类名为active的css样式 
  1.    .box {   
  2.      width: 200px;
  3.      height: 200px;
  4.      color: #333;
  5.    }
  6.    .active {
  7.      color: red;
  8.      background-color: pink;
  9.    }
复制代码
JavaScript样式: 
   通过classList可以为div节点添加active类 ((classname)也可以给div添加类名,但是大概会有覆盖前面的类名,照旧用classList举行添加更安全
  1. <script>
  2.     //通过classlist 添加
  3.     const box = document.querySelector('.box')
  4.     //类型不加点
  5.     box.classList.add('active')
  6.     //删除类
  7.     box.classList.remove('active');
  8.     //切换类,有就加上,没有就删掉
  9.     box.classList.toggle('active');
  10.   </script>
复制代码
定时器:

耽误函数:
   setTimeout为定时器耽误函数,可以到达某个时间后实验内里的函数
  1. function greet() {
  2.   console.log("Hello, world!");
  3. }
  4. // 5000 毫秒(5 秒)后执行 greet 函数
  5. setTimeout(greet, 5000);
复制代码
  取消定时器函数clearTimeout() 
  1. // 设置定时器延迟函数
  2. const timeoutId = setTimeout(sayHi, 3000);
  3. // 取消定时器
  4. clearTimeout(timeoutId);
复制代码
事故监听:

   下面给各人保举几个常用的事故,假如有其他必要可以再举行查询
  事故: 

1. 鼠标事故

       鼠标颠末事故:
      mouseover和mouseout会有冒泡结果
      mouseenter和mouseleave没有冒泡结果(保举) 
  

  • click: 当用户点击元素时触发。
  • dblclick: 当用户双击元素时触发。
  • mousedown: 当用户按下鼠标按钮时触发。
  • mouseup: 当用户开释鼠标按钮时触发。
  • mousemove: 当用户移动鼠标时触发。
  • mouseover: 当鼠标指针移动到元素上方时触发。
  • mouseout: 当鼠标指针移出元素时触发.
  • mouseenter: 当鼠标指针进入元素时触发(不冒泡)。
  • mouseleave: 当鼠标指针脱离元素时触发(不冒泡)。
2. 键盘事故



  • keydown: 当用户按下键盘上的键时触发。
  • keyup: 当用户开释键盘上的键时触发。
  • keypress: 当用户按下键盘上的字符键时触发(不保举利用,已被弃用)。
JavaScript 事故监听器可以用于处理处罚各种用户交互和体系事故。以下是一些常见的事故范例及其用途:
3. 表单事故



  • submit: 当表单被提交时触发。
  • change: 当表单控件的值发生厘革时触发。
  • input: 当用户输入数据时触发。
  • focus: 当元素得到核心时触发。
  • blur: 当元素失去核心时触发。
  • select: 当用户选中文本(比方在 <input> 或 <textarea> 中)时触发。
键盘监听事故事例: 

  1.   <input type="text" name="" id="">
复制代码
  当向input输入框中输入字体按下和弹起键盘时会触发该事故 
  1. const input = document.querySelector('[type=text]')
  2. //键盘事件
  3. input.addEventListener('keydown', function () {
  4.      console.log('按下')
  5. })
  6. input.addEventListener('keyup', function () {
  7.      console.log('弹起')
  8. })
复制代码
事故流:

   事故流(Event Flow)是指欣赏器在处理处罚事故时的过程。
  事故流紧张有三种阶段:捕获阶段、目的阶段和冒泡阶段。
   事故流的三个阶段

1.捕获阶段


  • 发生时间:事故从 document 对象开始流传,逐层向下,直到目的元素(事故的现实目的)。
  • 过程:从最外层的 document 级别开始,徐徐向下转达到目的元素的父元素、先人元素,直到目的元素的事故处理处罚步伐开始吸收事故。
  • 用途:这个阶段很少被利用,但可以用来拦截事故或举行预处理处罚。
2.目的阶段


  • 发生时间:事故到达目的元素时。
  • 过程:事故在目的元素上触发,并在目的元素上实验相应的事故处理处罚步伐。
  • 用途:这个阶段用于处理处罚事故的现实目的元素上的处理处罚步伐。
3.冒泡阶段


  • 发生时间:事故从目的元素开始向上冒泡,颠末每一个父元素,终极到达 document 对象。
  • 过程:事故在目的元素上处理处罚完后,事故会从目的元素逐级向上转达到 document 对象。每个父元素的事故处理处罚步伐都有机会处理处罚这个事故。
  • 用途:这个阶段非常有效,尤其是在事故署理和处理处罚多个相似事故时。
capture参数: 

   在 addEventListener方法中,true作为第三个参数用于指定事故处理处罚步伐的事故流阶段。这个参数称为 capture(捕获)或 useCapture
  capture参数:
  

  • true:表现事故处理处罚步伐将会在事故的 捕获阶段 实验。
  • false(默认值):表现事故处理处罚步伐将在事故的 冒泡阶段 实验。
默认capture为false 
    点击下面事故会先弹出父级,再弹出子级,假如讲capture参数删除,那么就先冒出子级,再,弹出父级
  1.   <div class="father">
  2.     <div class="son"></div>
  3.   </div>
复制代码
  1.     const father = document.querySelector('.father')
  2.     const son = document.querySelector('.son')
  3.     father.addEventListener('click', function () {
  4.       alert('我是爸爸')
  5.     }, true)
  6.     son.addEventListener('click', function (e) {
  7.       alert('我是儿子')
  8.     }, true)
复制代码
克制冒泡:
  1.     //阻止冒泡
  2.     e.stopPropagation()
复制代码
事故解绑:

  1.     const button = document.querySelector('button')
  2.     button.onclick = function () {
  3.       alert('点击了')
  4.     }
  5.     // 解绑方式一
  6.     button.onclick = null
  7.     //解绑方式二  (匿名函数无法被解绑)
  8.     function fu() {
  9.       alert('点击了')
  10.     }
  11.     button.addEventListener('click', fu)
  12.     button.removeEventListener('click', fu)
复制代码
冒泡的利益:

   当我们点击子元素时,会冒泡到父级元素上,从而触发父元素的事故
    点击第几个li,li通过冒泡上升到父级,然后父级监听到被点击的子元素字体变红 
  1.   <ul>
  2.     <li>我是第一个孩子</li>
  3.     <li>我是第二个孩子</li>
  4.     <li>我是第三个孩子</li>
  5.     <li>我是第四个孩子</li>
  6.     <li>我是第五个孩子</li>
  7.   </ul>
  8.   <script>
  9.     const ul = document.querySelector('ul')
  10.     ul.addEventListener('click', function (e) {
  11.       e.target.style.color = 'red'
  12.     })
复制代码
克制表单默认提交活动:

   默认活动通常是向服务器发送表单数据并重新加载页面。通过克制默认活动,可以防止这种情况发生,从而使表单在提交时不会革新页面。 
  1.     const form = document.querySelector('form')
  2.     form.addEventListener('submit', function (e) {
  3.       //阻止默认行为
  4.       e.preventDefault()
  5.     })
  6.   
复制代码
页面尺寸事故:


scrollLeft 和 scrollTop:
  1. const element = document.querySelector('.scrollable');
  2. console.log(element.scrollLeft); // 获取当前水平滚动位置
  3. element.scrollLeft = 100; // 设置水平滚动位置为100像素
  4. element.scrollTop = 100; // 设置垂直滚动位置为100像素
复制代码
offsetLeft 和 offsetTop:
   用于获取元素相对于其近来的已定位先人元素的偏移量(左上角)
  1. const element = document.querySelector('.box');
  2. console.log(element.offsetLeft); // 获取元素的左边距
  3. console.log(element.offsetTop); // 获取元素的上边距
复制代码
clientWidth 和 clientHeight:
   用于获取元素的视口尺寸,不包罗滚动条、边框或外边距。它们表现元素的可视地域的宽度和高度
  1. const element = document.querySelector('.box');
  2. console.log(element.clientWidth); // 获取元素的可视宽度
  3. console.log(element.clientHeight); // 获取元素的可视高度
复制代码
offsetWidth 和 offsetHeight:
   用于获取元素的现实宽度和高度,包罗元素的边框和内边距,但不包罗外边距。
  1. const element = document.querySelector('.box');
  2. console.log(element.offsetWidth); // 获取元素的总宽度
  3. console.log(element.offsetHeight); // 获取元素的总高度
复制代码
日期对象:

获恰当前日期方法:

  1.     const date = new Date()
  2.     console.log(date)
  3.     console.log(date.getFullYear())
  4.     console.log(date.getMonth() + 1)
  5.     console.log(date.getDate())
  6.     console.log(date.getDay())
复制代码
 

时间戳:

   时间戳通常指的是从1970年1月1日00:00:00 UTC(调和天下时)开始所颠末的毫秒数。这种时间戳被称为Unix时间戳或Epoch时间戳。JavaScript的Date对象提供了天生和利用时间戳的方法
  1.     //第一种获得时间戳方法(只能获得当前时间戳)
  2.     let time = Date.now()
  3.     console.log(time)
  4.     //第二种可以获得指定时间的时间戳
  5.     console.log(+new Date())
  6.     //第三种可以获得指定时间的时间戳
  7.     const date = new Date()
  8.     console.log(date.getTime())
复制代码
BOM:

   BOM(Browser Object Model,欣赏器对象模子)是一组与欣赏器窗口交互的对象聚集。BOM 紧张包罗了window,location,history,navigator等对象,它们提供了与欣赏器窗口、汗青记录、用户署理信息等交互的本领。
   定时器函数:

   setInterval()为定时器函数,每隔一段时间实验一次内里的函数 
  1. function sayHello() {
  2.   console.log("Hello, world!");
  3. }
  4. // 每隔 2000 毫秒(2 秒)执行一次 sayHello 函数
  5. setInterval(sayHello, 2000);
复制代码
  取消定时器 clearInterval()函数
  1. // 设置定时器,每隔 1000 毫秒(1 秒)执行一次
  2. const intervalId = setInterval(sayHi, 1000);
  3. // 取消定时器(例如:5 秒后停止)
  4. setTimeout(() => {
  5.   clearInterval(intervalId);
  6. }, 5000);
复制代码
location对象:

   location.href实现页面跳转
  1.   <a href="https://www.jd.com/error2.aspx">支付成功<span>5</span>跳转</a>
复制代码
  1. let i = 5
  2.     let timer = setInterval(function () {
  3.       document.querySelector('span').innerHTML = i
  4.       i--
  5.       if (i === 0) {
  6.         clearInterval(timer)
  7.         //5秒之后实现跳转
  8.         location.href = 'https://www.jd.com/error2.aspx'
  9.       }
  10.     }, 1000)
复制代码
  location.reload实现页面更新
  1.     const reload = document.querySelector('button')
  2.     reload.addEventListener('click', function () {
  3.       location.reload()
  4.     })
复制代码
history对象:

   history.forward页面的进步和退却功能
  1.   <button>退</button>
  2.   <button>进</button>
复制代码
  1. const back = document.querySelector('button:first-child')
  2.     const forword = back.nextElementSibling
  3.     back.addEventListener('click', function () {
  4.       history.back()
  5.     })
  6.     forword.addEventListener('click', function () {
  7.       history.forward()
  8.     })
复制代码
 localStorage对象:

   通过localStorage对象可以将信息存到本地,纵然当页面关闭时也存在,除非主动删除
  1.     //添加键值对
  2.     localStorage.setItem('test', 'dom')
复制代码

得到本地信息内容:
  1. // 获取键值对
  2. const value = localStorage.getItem('test');
  3. console.log(value); // 输出 "dom"
复制代码
到这里就解说完了,感谢各人的观看!!!



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表