3.1 DOM

Posted aorange

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.1 DOM相关的知识,希望对你有一定的参考价值。

1.1  JS的组成

  1.JS语法 --> ECMAScript

  2.BOM --> Browser Object Model(浏览器对象模型)

  3.DOM --> Document Object Model(文档对象模型) 可以操作html+css

  DOM也可以理解为是对HTML以及XML的标准编程接口

  DOM的结构呈树状,也把DOM叫做DOM树,DOM树是由很多DOM节点组成的

参考资料:

https://www.runoob.com/htmldom/htmldom-nodes.html

 

节点:在HTML中叫以下的是元素和标签,在js中叫节点

技术图片

 

4.节点的分类    nodeType     

  文本节点         3 (空格部分和文字)

  注释节点         8 <!--happy-->)

  元素节点         1  (也就是标签)

  属性节点         2  (就是那些类名ID名)

  文档节点(document)  9

 

5.DOM节点的属性  (对象属性)

  nodeType 区分节点的类型

  nodeName 获取节点的名称

  nodeValue 获取注释节点和文本节点的内容

  attributes 获取元素节点的属性节点集合(类名ID名)

例:

技术图片
<div id="box">
    <h3>2</h3>
    <b>哈哈</b>
</div>
<script>
    var oBox =document.getElementById(box)
    console.log(oBox.nodeName,oBox.attributes[0])     // “DIV”  “id=box”
</script>
View Code

技术图片

 

6.DOM操作   ===>基于节点树的操作 (一般不用)

  childNodes 查询所有的子节点们

  firstChild 查询第一个子节点

  lastChild 查询最后一个子节点

  parentNode 查询父节点

  nextSibling 查询下面的相邻的兄弟节点

  previousSibling 查询上面的相邻的兄弟节点

 

7.DOM操作   ===>基于元素节点树的操作

  children 查询所有的元素子节点们

  firstElementChild 查询第一个元素子节点

  lastElementChild 查询最后一个元素子节点

  parentElement 查询父元素节点

  nextElementSibling 查询下面的相邻的兄弟元素节点

  previousElementSibling 查询上面的相邻的兄弟元素节点

 

例:

技术图片
<div id="box">
    <h3 class="box1">1</h3>
    <h4 tittle="aa">sds</h4>
    <span>啦啦啦</span>
    <h2>我是h2</h2>
</div>
<script>
    var oBox =document.getElementById(box)
    var cc=oBox.childNodes //查询oBox下的所有的子节点
    var dd=oBox.children //仅查询oBox下所有元素子节点们
    var bb=oBox.firstElementChild //仅查询oBox下第一个元素子节点
    var aa=oBox.firstChild //查询oBox下第一个子节点
    console.log(cc,dd,bb,aa);
</script>
View Code

技术图片

 

 

8.判断一个元素节点有没有子节点

  element.hasChildNodes() 如果有则返回true。没有则返回false

 

9.DOM操作(对象方法) ===>查询

  document     获取document文档

  document.head   获取head标签

  document.body   获取body标签

  document.documentElement   获取html标签

  document.getElementById()   通过id获取元素

 

获取的是以数组形式保存↓   获取数组某个值 arr[1,2][0]

  document.getElementsByClassName()    通过class获取元素

  document.getElementsByTagName()     通过标签名获取元素

  document.getElementsByName()     通过name属性获取元素

  document.querySelectorAll()       选到指定选择器的所有元素

  document.querySelector()         选到指定选择器下的第一个元素

 

例:① var oBox =document.getElementsByClassName(‘box‘) 得到的是个数组

  我们要得到是数组里面的值

  所以var oBox =document.getElementsByClassName(‘box‘)[0] 

 技术图片

 

 

技术图片
<div class="box">
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
</div>
var aLi = document.querySelectorAll(.box ul li);
var ali1=document.querySelector(.box ul li)    //得到的是第一li    
View Code

技术图片

获取的是一个数组 --->NodeList(3)[ li, li, li ]获取到所有的li,同理[0]获得第一个li

 

10.DOM操作(对象方法)   ===>节点创建

  document.createElement() 创建元素节点

  document.createTextNode() 创建文本节点

  document.createComment() 创建注释节点

  document.createDocumentFragment 创建文档片段节点

 

 技术图片

 

11.DOM操作(对象方法)   ===>节点添加(剪切操作)

  parentNode.appendChild(A) 把节点插入到父节点的最后面

  parentNode.insertBefore(A,B) 把节点A添加在节点B前面

  父节点.方法

例:

技术图片
<div class="box">
    <i>费收到回复碍事儿我安</i>
    <p>sdasdasdasd</p>
</div>
var oBox = document.getElementsByClassName(box)[0] //获得标签
var oa=document.getElementsByTagName(p)[0] //获得p标签
var oDox = document.createElement(div) //创建一个div
oBox.insertBefore(oDox,oa)
View Code

 技术图片

技术图片

 

12.DOM操作(对象方法)   ===>节点删除

  parentNode.removeChild(A) 删除节点A

  只有父级才可以删子级

 技术图片

 

 

13.DOM操作(对象方法)   ===>节点替换(剪切操作)

  parentNode.replaceChild(A,B) 用节点A代替节点B

 

14.元素节点的常用属性

  innerHTML 获取元素节点的内容,可读可写

  如果内容中有符合html格式的,会被解析成标签

 技术图片

 

  innerText 获取元素节点的内容,可读可写

  如果内容中有符合html格式的,不会被解析成标签

 技术图片

  attributes 获取元素节点的属性节点

 

可读:

<i>费收到回复碍事儿我安</i>

var oDox = document.getElementsByTagName(‘i‘)[0]

var sa = oDox.innerText,然后控制台打印

 

15.元素节点的常用方法

  element.setAttribute(“class”,“on”) 设置元素节点的class属性

  class是类型  on 是值

  element.getAttribute(“class”) 获取元素节点的class属性

  element.removeAttribute(“class”) 删除元素节点的class属性

 

技术图片
<div class="box">
    <h3>达到</h3>
</div>
var ab=oBox.children[0].setAttribute(class,on)     //控制台打印
var ab=oBox.children[0].getAttribute(class)    //获取节点class
var abbb=oBox.children[0].removeAttribute(class) //删除class 节点
View Code

 技术图片

17.动态获取与静态获取

  get系列是动态获取,指获取节点之后还可以检测出符合条件的节点,并且放置到集合中

  query系列是静态获取,指在获取节点之后无法检测出符合条件点的节点

 

 

 

以上是关于3.1 DOM的主要内容,如果未能解决你的问题,请参考以下文章

CSS 设计彻底研究深入理解盒子模型

40行代码内实现一个React.js

07.31《jQuery》——3.1jQuery实现DOM节点的增删改

使用jQuery快速高效制作网页交互特效——03 第三章 JavaScript操作DOM对象

第三章:3.1 在 index.html 文件中,编写一个登录表单

第三章 面向对象编程 3.1类型系统