DOM、BOM

20230210092438.png

js 包含哪几部分?

  • Es:是一门语言,学习Es学习语法。(ECMA 欧洲计算机协会(ECMAScript)
  • DOM:浏览器对象模型;
  • 用途:提供给Es一个接口来操作浏览器。
    -1. BOM:文档对象模型;
  • 用途;提供ES一个操作浏览器的接口(Api)来操作文档。
  • 2.DOM:查询:位置、尺寸。HTML元素添加注册事件。
  • 3.DOM定义两套API:ElementAPI(元素Apl)、NOdeAPL(节点APL)

BOM是什么?

  • 1.BOM:Browser Object Model:浏览器对象模型。
  • 2.BOM把浏览器的一切定义成了一个对象模型。
  • 3.有五大对象
  • window:整个浏览器被定义成立一个window对象。
  • document:把文档定义成立一个对象。
  • History:把历史记录定义成了一个对象。
  • Screen:把显示浏览器窗口的屏幕定义成了一个对象。
  • Location: 把地址栏定义成了一个对象
  • Navigator:把浏览器的介绍信息定义成了一个对象。
  • 4.BOM用途:允许ES操作浏览器的一切。
  • 5.BOM目前没有标准。

DOM是什么?

  • DOM:Dcoument Object Model 文档对象模型
  • 1.用途:DOM就是为了操作文档用到。
  • 2.在DOM眼里,整个文档内容都是对象。
    -3. DOM把文档的一切内容都定义了对象。
  • 文档对象
  • 元素对象
  • 文本对象
  • 属性对象
  • 节点对象
  • 4.DOM 是W3C制定的一套有标准的。

DOM树

微信图片_20230210182642.png
  • document对象
  • element对象
  • attribute对象
  • text对象
  • node对象
    -注释
  • DOM把整个文档定义成了一个树状模型;

Dcoument

  • 定义:
    1. 表示: Dcoument对象表示网页文档
  • 2.地位:Dcoument对象是DOM的核心对象
  • 3.用途: Dcoument对象是进入文档的入口。
  • 4.Dcoument:主要用途:主要用于查找元素.

主要用途:3种

  • 增:创建元素
  • 改:修改文档
  • 查:查找元素

Dcoument获取元素的方法:(3大类型)

1.传统方法:

1.通过id获取元素:getElementById()

  • 示例:
//语法:
window.dcoument.getElenentById('id')
//等同于
dcoument.getElenentById('id')

2.通过标签名获取元素:

  • document.getElementsByTagName('标签')
    定义:文档(dcoument)和元素(elment)
  • 语法:
getElenentByTagName('标签')
  • 示例
const ul1 = document.getElementsById('ul1')
const arr2 =ul1.getElementsByTagName('ul2')//通过elment获取
// const arr3= document.getElementsByTagName('li')
console.log(arr)

H5新增方法

  • 1.通过class获取元素:
document.getElementsByClassName('class')

document.getElementsByClassName('class')

2.选择器

  • 1.通过css选择器获取元素:
document.querySelector('selector')
  • 2.通过css选择器获取元素:
document.querySelectorAll('selector')//匹配第一个
element.querySelectorAll('selector')//选择所有的

特殊方法(选择元素的快捷键)

  • 1.document.documentElement:获取文档的<html>重点
  • 2.document.body 获取文档的<主体>标题元素
    重点2
  • 3.document.head:获取文档的<头部>元素
  • 4.document.title获取文档的<title>标题元素
  • 5.document.links:获取文档的<a>标签
    1. document.images:获取文档的<img>图片元素

  • 示例:
        console.log(document.images)//hello world
        console.log(document.title)//hello world
        console.log(document.body)//重点2!!<body>
        console.log(document.head)//<head>
        console.log(document.html)//undefined
        console.log(document.documentElement)//   下、重点1!!<html lang="en"

NodeApl

  • 定义:Node Apl把DOM树中的全部对象看成是节点,并为这些节点对象定义了大量的属性和方法。
    用途:
  • 1.查找结点的基本信息:
    节点名称、节点类型、节点值;
  • 2.查找节点之间的关系:父子、兄弟
  • 3.主要用操作节点:增、删、改、查
  • 增:创建节点
  • 删:删除节点
  • 改:修改节点
  • 查:查找节点
    5.请谈一谈Node Apl查找元素和document Api查找元素区别
  • NOde Apl查找元素的方式:间接查找,也就是按照元素之间的关系查找。
  • document API 查找元素的方式是:直接查找。

Node API的三⼤基本属性

1.Node.nodeType

  • 定义:nodeType表示节点类型。
  • 返回:当前节点的类型。
    1.nodeType把节点类型分成了9种:
  • 元素节点:1
  • 属性节点:2
  • 文本节点:3
  • 注释节点:8
  • 文档节点:9:
    -2.在DOM眼里,全部文档内容都是对象。
  • 3.DOM把整个文档定义成了一个树状模型;
  • 4.DOM:定义了大量的API(属性和方法)来操作这些对象。
  • 5.DOM是doucement的核心对象。
  • 示例
            window.onload = function () {
            //元素、文本、注释
            const arr = document.body.childNodes//反出字节点  在当前之前的就是子节点
            console.log(arr)
            console.log(arr[0].nodeType);//3
            console.log(arr[1].nodeType);//1
            console.log(arr[3].nodeType);//8
            //文档9
            console.log(document.nodeType);//9
            //属性2
            const h2 = document.querySelector('h2')
            console.log(h2.getAttributeNode('id').nodeType);//2
        }
  • 2.Node.nodeName
  • 定义:返回节点的名称
  • 示例:
<script>
window.onload = function(){
const nodeLists = document.body.childNodes
console.log(nodeLists);
console.log(nodeLists[0].nodeName);//#text
console.log(nodeLists[1].nodeName);//H2
console.log(nodeLists[3].nodeName);//#comment
console.log(document.nodeName);//#document
 }
</script>
</head>
<body>前⾯
<h2>⼆级标题</h2>后⾯
<!-- 注释 -->
</body>

3.Node.nodeValue

  • 定义:返回节点的值
  • 返回:节点的值
  • 注意
    返回1.:只有文本节点、属性节点、注释节点的值

返回2.:元素节点和⽂档节点的是 NULL.

  • 示例:
<h2 id="">hello wolrd</h2>

<body>
    <script>
        const h2 = document.querySelector('h2')
        console.log(h2.nodeName)
        console.log(h2.nodeType)
        console.log(h2.FnodeValue)//返回文本节点、属性节点、注释节点的值
        console.log(h2.firstChild.nodeValue)//拿到第一个子节点  hello wolrd


        //如何获取属性节点:Node.getAttribute 
        const v = h2.getAttribute('id')
        console.log(v)
        console.log(v.nodeValue)

    </script>
</body>

注意:只有文本节点和注释节点有值;

元素节点和文档节点为空。
节点定义:

  • 父节点:一节点之上的直接节点就它的父节点
  • 子节点:一个节点之下的就它的子节点
  • 兄弟节点:具有相同父节点下的节点
  • 后代节点:一个节点之下的所有层级的节点

1.Node.childNodes:属性可返回指定节点的子节点的节点列表.

  • 语法:
 **元素.getAttributeNode("属性名")**:方法从当前元素中通过名称获取属性节点

2.Node.childNodes:返回当前节点的子节点


3.Node.nextSibling:返回当前节点的下一个兄弟节点


4.Node.previousSibling:返回当前节点的上一个子节点


5.Node.firstChild:返回当前节点的第一个子节点


6.Node.lastChild:返回当前节点的最后一个子节点。


Array.from(伪数组)

  • 将伪数组转成真正的数组
Array.from(document.images)//把伪数组转成真正的数组

操作节点的方法

  • 对文档种的节点:增、删、改、查。
    增

NOde API操作节点的五大方法:

1.Node.appendChild(element):Add anHtml element

  • append:绑定、添加
  • 定义:从父节点的*末尾添加子节点。
  • 语法:
父节点对象.appendChild(**子节点对象**)
  • 父节点对象:就是你获取的元素

  • 子节点对象:1.已有节点、2.新建节点

  • 返回值:

  • 示例:

  //向ul添加子元素li//appendChild
        const li = document.createElement('li')
        li.innerHTML = 'hello world'
        const ul = document.querySelector('ul')
        ul.appendChild(li)


2.Node.insertBefore(new,old)(元素、位置):为父节点插入子节点

  • 定义:从父节点的开始添加子节点**。
  • 语法:
父节点对象.insertBefore(新的、旧的)
  • 示例:
  //inser
        const li2 = document.createElement('li')
        li2.innerHTML = '耳聋'
        ul.insertBefore(li2.ul.firstElementChild)

3.Node.removeChild()

  • 定义:从⽗节点身上删除⼦节点。
  • 语法:
document.removeChild(**子节点**)
  • 定义:创建一个新元素(在挂在DOm之前放在内存里)
  • 语法:
⽗节点对象.removeChild(⼦节点对象)
  • 返回值
    删除的⼦节点对象或null

4.Node .replaceChild(子节点):在父节点上执行替换子节点。

  • 5.Node.hasChildNodes():在父节点上执行查询子节点。


|--属性对照表--|

Element API(元素节点) Node API(节点Apl)
|:-:|:-:|:-:|
获取⼦对象列表
children 、Node.childNodes


获取第⼀个⼦对象 firstElementChild Node.firstChild


获取最后⼀个⼦对象 lastElementChild Node.lastChild


获取下⼀个兄弟对象 nextElementSibling Node.nextSibling


获取上⼀个兄弟对象 previousElementSibling Node.previousSibling


获取⽗对象
parentElement Node.parentNode


)
示例
属性对照表

Node API操作节点的⽅法表

  • ⽗.appendChild(⼦)
  • ⽗.insertBefore(新,旧)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容