JavaScript之DOM

什么是DOM?

DOM 中的三个字母,D(文档)可以理解为整个 Web 加载的网页文档;O(对象)可以理解为类似 window 对象之类的东西,可以调用属性和方法,这里我们说的是 document对象;M(模型)可以理解为网页文档的树型结构。

DOM 有三个等级,分别是 DOM1、DOM2、DOM3,并且 DOM1 在 1998 年 10 月成为W3C 标准。

DOM节点

节点:加载 HTML 页面时,Web 浏览器生成一个树型结构,用来表示页面内部结构。DOM 将这种树型结构理解为由节点组成

节点种类:元素节点、文本节点、属性节点


DOM节点获取

getElementById()    获取特定 ID 元素的节点

注意问题:window.onload

元素节点 属性:tagName       innerHTML

HTML属性的属性:id      title    style     className

getElementsByTagName()    获取相同元素的节点列表

document.getElementsByTagName('*'); //获取所有元素

document.getElementsByTagName(‘*’).length

getElementsByName()      获取相同名称的节点列表

document.getElementsByName('add') //获取 input 元素

document.getElementsByName('add')[0].value //获取 input 元素的 value 值

document.getElementsByName('add')[0].checked//获取 input 元素的 checked 值

getAttribute(名称)    获取特定元素节点属性的值

setAttribute(名称,值)    设置特定元素节点属性的值

removeAttribute(名称) 移除特定元素节点属性


子节点:只取第一层

childNodes      例:oUl.childNodes                

兼容性问题:  FF空的文本节点也算作一个节点   IE:空的不算

解决方法:

 nodeType:节点类型    例:body.childNodes[0].nodeType

 返回值:1为元素节点      3为文本节点

Children    例:oUl.children

 IE\FF\谷歌都兼容


父节点:只有一个

parentNode 结构上的父级元素        例:oLi.parentNode

offsetParent 定位上的父级元素        例:oLi.offsetParent


首尾节点(有兼容性问题)

firstChild\firstElementChild 第一个子节点       

例:oFirst=oUl.firstElementChild || oUl.firstChild

lastChild\lastElementChild  最后一个子节点       

例:oLast=oUl.lastElementChild || oUl.lastChild


兄弟节点(有兼容性问题)

nextSibling\nextElementSibling  下一个节点       

例:oNext=oUl. nextElementSibling || oUl.nextSibling

previousSibling\previousElementSibling  上一个节点     

例:oPrevious=oUl. previousElementSibling || oUl. previousSibling


createElement() 创建一个元素节点

document.createElement('p'); //创建一个元素节点

createTextNode() 创建一个文本节点

var text = document.createTextNode('段落'); //创建一个文本节点

p.appendChild(text); //将文本节点添加到子节点末尾


appendChild() 将新节点追加到子节点列表的末尾

appendChild()方法讲一个新节点添加到某个节点的子节点列表的末尾上。

var box = document.getElementById('box'); //获取某一个元素节点

var p = document.createElement('p'); //创建一个新元素节点<p>

box.appendChild(p); //把新元素节点<p>添加子节点末尾

insertBefore() 将新节点插入在前面

box.parentNode.insertBefore(p, box); //在box(div)之前创建一个节点


replaceChild() 将新节点替换旧节点

var p=document.createElement('p');

box.parentNode.replaceChild(p,box); //把<div>换成了<p>

cloneNode() 复制节点

var box = document.getElementById('box');

var clone = box.firstChild.cloneNode(true); //获取第一个子节点,       true 表示复制内容

box.appendChild(clone); //添加到子节点列表末尾

removeChild() 移除节点

box.parentNode.removeChild(box); //删除指定节点


文档碎片可以提高DOM操作性能(理论上)

文档碎片原理

    document.createDocumentFragment()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • DOM 文档对象模型 (DOM) 是HTML和XML文档的编程接口。它给文档(结构树)提供了一个结构化的表述并且定...
    匿名用户404阅读 448评论 1 8
  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,823评论 0 8
  • 【问题】If some one handed me 一个对象,那我有没有得到这个对象中包含的所有的属性办法?【回答...
    隐藏的记号阅读 503评论 0 1
  • 通过ID寻找 var x=document.getElementById("intro"); 通过标签名寻找 ...
    寿_司阅读 350评论 0 2
  • 地铁C出口出来,还没来得及看看这繁华的城市,转弯瞬间彷佛又进入了地下。一路进来,一脸惊讶,“天啊!真不敢相...
    文沭阅读 166评论 0 0