当前位置: 首页> 房产> 市场 > 一小时搞定JavaScript(2)——DOM与BOM的应用

一小时搞定JavaScript(2)——DOM与BOM的应用

时间:2025/7/12 4:30:25来源:https://blog.csdn.net/qq_65034569/article/details/139770435 浏览次数:0次

前言,本篇文章是依据bilibili博主(波波酱老师)的学习笔记,波波酱老师讲的很好,很适合速成!!!
image-20240617155249414
本篇文章会与java进行对比学习,因为JS中很多语法和java是相同的,所以大家最好熟悉Java语言后再来进行学习,效果更佳,见效更快.

文章目录

  • 5.DOM和BOM
    • 5.1 DOM
      • 5.1.1传统元素获取
      • 5.1.2 CSS选择器获取元素(推荐使用)
    • 5.2 事件
      • 5.2.1事件的调用方式
      • 5.2.2 点击事件
      • 5.2.3 鼠标事件
      • 5.2.4 键盘事件
      • 5.2.4 焦点事件
      • 5.2.5 多事件注册
      • 5.2.6 事件参数e
      • 5.2.7 事件冒泡
      • 5.2.8 表单事件
    • 5.3 节点
      • 5.3.1 父节点
      • 5.3.2 子节点
      • 5.3.4 兄弟节点
      • 5.3.5 操作节点
        • 创建节点
        • 删除节点
    • 5.4 BOM
      • 5.4.1 **Window对象**
      • 5.4.2 对话框事件
      • 5.4.3 定时器
      • 5.4.4 document对象
      • 5.4.5 加载事件
      • 5.4.6 定位location

5.DOM和BOM

5.1 DOM

概念DOM就是文档树模型,全程为文档对象模型。

文档层级结构:

  • 文档:一个信息也没也可以称为文档
  • 节点:网页中的所有内容都是节点(标签、属性、文本、注释)
  • 元素:页面中的标签
  • 属性:标签中的属性

5.1.1传统元素获取

  1. 根据ID获取元素

    • document.getElementByID("ID名")
  2. 通过标签名获取元素

    document.getElementByTagName("标签名")

    for循环遍历输出
    image-20240618101634570

  3. 根据name获取元素

    • document.getElementsByName("name")
  4. 根据class获取元素

    • document.getElementsByClassName("class名称")[获取元素的个数]
  5. 指定后代获取元素

    • document.getElementsBy获取元素方式1().getElementsBy获取元素方式2())

      例如:
      document.getElementsByName("name").getElementsByID("ID名")
      

5.1.2 CSS选择器获取元素(推荐使用)

CSS选择器获取元素只需要记住两个语句就可以了,分别是document.querySelector()(单元素选择器)和document.querySelectorALL()(多元素选择器),然后在方法的括号中通过不同的标签名称来区分获取的是什么元素,具体如下:

  1. 通过ID选择器
    • document.querySelector("#ID名称")
  2. 通过标签选择器
    • document.querySelector("标签")
  3. 通过类选择器
    • document.querySelector(".class名称")
  4. 通过后代选择器
    • document.querySelector(获取元素方式1 获取元素方式2)(获取元素方式中间通过空格隔开)
  5. 子代选择器(通过>尖括号指向子代)
    • document.querySelector("获取元素方式1>获取元素方式2")
  6. 结构选择器(CSS3里面新特性)
    • documents.querySelector("获取元素方式1 获取元素方式2").innerHTML
      例如:image-20240618104503646

document.querySelector()(单元素选择器)和document.querySelectorALL()(多元素选择器)的区别:

单元素选择器只选择一个元素,而多元素选择器会选择多个元素。

格式上也有区别:

  • document.querySelector()
  • document.querySelectorALL()[指定的数量]

5.2 事件

5.2.1事件的调用方式

  1. 在script标签中调用

    含义就是在<script`>标签内部调用事件

    //语法----------
    var 对象名 = 获取Dom元素
    对象名.onclick = fuction()
    {~
    };
    //案例----------<script>window.onload = function(){var oBtn = document.getElementById("btn");oBtn.onclick = function(){alert("通过script标签调用")};}</script>
    
  2. 在元素中调用事件

    含义就是直接在html属性中调用事件

    //语法----------
    <script>function 调用函数名称(){alert("在元素中调用事件")}
    </script><body><标签名 onclick="调用函数名称()">~</标签名>
    </body>
    //案例----------
    <script>function diaoyong(){alert("在元素中调用事件")}
    </script><body><input id="btn" type="button" value="弹出" onclick="diaoyong()"/><!--onclick为事件属性-->
    </body>
    

5.2.2 点击事件

定义:原理是通过操作HTML属性的方式来实现给元素添加一个事件

语法:对象名.onclick = function(){~}

PS:是不能为一个元素添加多个事件处理器

5.2.3 鼠标事件

.onmouseover移入鼠标

.onmouseout移出鼠标

.onmousemove表示在元素移动一下就触发

image-20240618105010494

鼠标按下和松开事件:

通过onmousedown来实现按下鼠标事件,指的是鼠标按下一瞬间触发的事件

通过onmouseup来实现松开鼠标事件,指的是鼠标松开一瞬间触发的事件

5.2.4 键盘事件

通过onkeydown来实现键盘按下一瞬间触发的事件

通过onkeyup来实现键盘松开一瞬间触发的事件

<!--实现键盘输入字符串长度统计案例-->
<script>window.onload = function(){var otxt = document.getElementById("txt");var onum = document.getElementById("num");otxt.onkeyup =function(){var str = otxt.value;//获取文本框内容复制给变量onum.innerHTML = str.length;}}
</script>
<body><input type="text" id="txt"><div>字符串长度为:<span id="num">0</span></div>
</body>

5.2.4 焦点事件

.onfocus获取焦点

.onblur失去焦点

image-20240618105249956

5.2.5 多事件注册

.addEventListener()注册事件

.removeEventListener()解绑事件

通过addEventListener()来实现为一个元素添加事件

语法:对象名.addEventListener(type,fn,false);有三个参数,第一个参数就是事件类型,第二个就是函数fn,第三个参数就是false

image-20240618105526405

5.2.6 事件参数e

通过e参数来判断触发的是什么事件。

image-20240618105815118

5.2.7 事件冒泡

元素层叠在一块,点击一种元素,会触发到所有元素的情况就是事件冒泡。

image-20240618110047135

可以通过以下两种方法来取消冒泡:

  • window.enent.cancelBubble = true
  • e.stopPeopagation()

image-20240618110232472

5.2.8 表单事件

通过onfocus来实现获取焦点时触发的事件

通过onblur来实现失去焦点时触发的事件

  • PS:并不是所有的html元素都具有焦点事件,只有一下两种元素具备

    1. 表单元素(单选框\复选款\单行文本框\多行文本框\下拉列表)

    2. 超链接元素

<!--焦点搜索框案例-->
<script>window.onload = function(){var os = document.getElementById("s1");//获取焦点事件---------------------------os.onfocus = function(){if(this.value == "默认文本框显示内容"){this.value = "";}}//失去焦点事件---------------------------os.onblur = function(){if(this.value ==""){this.value = "默认文本框显示内容";}}}
</script>
<body><input id="s1" type="text" value="默认文本框显示内容"/><input id="b1" type="button" value="搜索按钮"/>
</body>

通过onselect来实现选中"单行文本框"或者"多行文本框"中的内容时触发的事件

<script>window.onload = function(){var os2 = document.getElementById("s2");var os3 = document.getElementById("s3");os2.onselect = function(){alert("你选中了单行文本框!");}os3.onselect = function(){alert("你选中了多行文本框!!!")}}
</script>
<body><input id="s2" type="text" value="这是一个单行文本框"/><br/><textarea id="s3" cols="20" rows="5">这是一个多行文本框&nbsp;这是一个多行文本框&nbsp;这是一个多行文本框&nbsp;这是一个多行文本框&nbsp;</textarea>
</body>

通过onchange来实现具有多个选项的表单元素

  • 单选框选择某一项内容时触发
  • 复选框选择某一项内容时触发
  • 下拉列表选择某一项时触发
<!--单选框选择某一项内容时触发事件的案例-->
<script>window.onload = function () {var oFruit = document.getElementsByName("f");var oP = document.getElementById("content");for (var i = 0; i < oFruit.length; i++) {oFruit[i].onchange = function () {if (this.checked) {oP.innerHTML = "你选择的是:" + this.value;}};}}
</script>
<body><div><label><input type="radio" name="f" value="第一个案例" />第一个案例</label><label><input type="radio" name="f" value="第二个案例" />第二个案例</label><label><input type="radio" name="f" value="第三个案例" />第三个案例</label></div><p id="content"></p>
</body>
<!--复选框选择某一项内容时触发事件的案例-->
<script>window.onload = function () {var oSelectAll = document.getElementById("selectAll");var oFruit = document.getElementsByName("fruit");oSelectAll.onchange = function () {//如果选中,即this.checked返回trueif (this.checked) {for (var i = 0; i < oFruit.length; i++) {oFruit[i].checked = true;}} else {for (var i = 0; i < oFruit.length; i++) {oFruit[i].checked = false;}}};}
</script>
<div><p><label><input id="selectAll" type="checkbox"/>全选/反选:</label></p><label><input type="checkbox" name="fruit" value="苹果" />苹果</label><label><input type="checkbox" name="fruit" value="香蕉" />香蕉</label><label><input type="checkbox" name="fruit" value="西瓜" />西瓜</label>
</div>
<!--下拉列表选择某一项时触发-->
<script>window.onload = function () {var oList = document.getElementById("list");oList.onchange = function () {var link = this.options[this.selectedIndex].value;window.open(link);};}
</script>
<body><select id="list"><option value="http://wwww.baidu.com">百度</option><option value="http://www.sina.com.cn">新浪</option><option value="http://www.qq.com">腾讯</option><option value="http://www.sohu.com">搜狐</option></select>
</body>

5.3 节点

节点包含:网页中的所有内容都是节点(标签、属性、文本、注释、回车、换行空格等)

节点的属性:

  • nodeType:节点带的类型
    • 1——标签
    • 2——属性
    • 3——文本
  • nodeName:节点的名字
    • 标签节点——大写的标签名字
    • 属性节点——小写的属性名字
    • 文本节点——#text
  • nodeValue
    • 节点的值——标签节点——null
    • 属性节点——属性值
    • 文本节点——文本内容

5.3.1 父节点

  • 获取父元素:.parentElement
  • 获取父节点:.parentNode

5.3.2 子节点

  • 获取子元素:.children
  • 获取子节点:.childrenNodes

获取节点的三种方法:

  1. 第一种方式就是通过子元素获取
  2. 第二种方式就是通过子节点获取(稍微比较麻烦)
  3. 第三种方式通过Class选择器获取

image-20240618111640693

5.3.4 兄弟节点

获取兄弟元素:

  • 首元素:firestElementsChild
  • 上一个元素:previousElementSibling
  • 下一个元素:nextElementSibling
  • 尾元素:lastElementChild

获取兄弟节点:

  • 首节点:firstChild
  • 上一节点:previousSibling
  • 下一节点:nextSibling
  • 尾节点:lastChild

image-20240618111852047

5.3.5 操作节点

创建节点

document.write("<标签>内容</标签>"):会使得页面中所有内容全部被覆盖掉。

image-20240618112616094

对象.innerHTML = "标签代码及其内容"

image-20240618112656372

createElement("标签")

使用新创建的标签:对象.appendChild(创建标签的对象名)

image-20240618112752858

删除节点

通过removeChild(创建标签的对象名)来进行删除创建的节点

image-20240618112855499

5.4 BOM

BOM是指浏览器对象模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的window对象是BOM的顶层对象,其他对象都是该对象的子对象。

我们在浏览器中的一些操作都可以便用BOM的方式进行编程处理。比如:刷新浏览器、后退、前进、在浏览器中输入URL等。

5.4.1 Window对象

window对象无论是他的属性还是方法,都可以省略window前缀

打开窗口open(url,target);(target参数常用取值:“_self"和”_blank")

关闭窗口 close();

5.4.2 对话框事件

  1. alert("~")

    在alert()中实现换行用的是\n

  2. confirm("~")

    带有确认功能的对话框,会返回一个布尔值

  3. prompt("~")

    不仅返回提示文字,还返回一个字符串

5.4.3 定时器

  1. setTimeout()clearTimeout()

    用setTimeout()来一次性调用函数,并且可以使用clearTimeout()来取消执行setTimeout()

    语法:setTimeout(code,time);

    • 参数code可以是执行的代码
    • 参数time表示多长事件执行一次code
  2. setInterva()clearInterval()

    此类方法可以重复多次使用计时器

    案例一:

image-20240618113803036

案例二:

<!--通过setInterva()来实现倒计时案例--><script>//定义全局变量,用于记录秒数var n = 5;window.onload = function () {//设置定时器,重复执行函数countDownvar t = setInterval(countDown, 1000);//设置清楚定时器,实现倒计时停止功能var obt = document.getElementById("btn");obt.onclick = function(){clearInterval(t);}            }//定义函数function countDown() {//判断n是否大于0,因为倒计时不可能有负数if (n > 0) {n--;document.getElementById("num").innerHTML = n;}}</script><body><p>倒计时:<span id="num">5</span></p><input id="btn" type="button" value -"停止"/>
</body>

5.4.4 document对象

定义:用来操作HTML文档里所有的内容

  • Window对象是浏览器为每个窗口创建的一个对象,这些都被称作"BOM(浏览器对象模型)"
  • Document对象是浏览器为美观窗口内的HTML页面创建一个对象,这些称为"DOM(文档对象模型)"
  • BOM包含于DOM

document对象属性:

序号document对象属性说明
1document.title获取文档的title
2document.body获取文档的body
3document.forms获取所有form元素
4document.images获取所有img元素
5document.links获取所有a元素
6document.cookie获取文档的cookie
7document.URL获取当前页面的地址
8document.referrer获取用户在访问当前页面之前所在页面的地址 ???$$$

PS;

  • 以上3.4.5.等价于 getElementByTagName("form|img|a")

  • 7.等价于window.location.href

document对象方法:

document对象方法说明
document.getElementById()通过 id 获取元素
document.getElementByTagName()通过标签名获取元素
document.getElementClassName()通过 class 获取元素
document.getElementByName()通过 name 获取元素
document.querySelector()通过选择器获取1个元素
document.querySelectorAll()通过选择器获取所有元素
document.createElement()创建元素节点
document.createTextNode()创建文本节点
document.wirte()输出内容
document.writeln()输出内容并换行

PS:

  • document.wirte(“~”),当中,不仅可以输出文本内容,还可以输出元素
  • writeln()方法与wirte()方法类似,区别在于:writeln()方法会输出内容后面多加一个换行符\n

5.4.5 加载事件

image-20240618113948009

5.4.6 定位location

定义:可以用来操作当前窗口的URL

  1. window.location,href输出当前页面的地址
  2. location.search获取或设置当前页面地址"?"后面的内容
  3. location.hash获取当前页面地址"#"后面的内容

以下是location对象的一些关键字,大家了解即可:

image-20240618114042979

location.href = "网址"设置跳转页面(这个属性会用的比较多一点)

image-20240618114057262

关键字:一小时搞定JavaScript(2)——DOM与BOM的应用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: