DOM : Document Object Model 文档对象模型
文档:html页面
文档对象:页面中元素
文档对象模型:定义 为了能够让程序(js)去操作页面中的元素

DOM会把文档看作是一棵树,同时定义了很多方法来操作这棵数中的每一个元素(节点)

DOM节点

getElementById
getElementByTagName
document
document.body

元素.childNodes : 只读 属性 子节点列表集合;标准下:包含了文本和元素类型的节点,也会包含非法嵌套的子节点;非标准下:只包含元素类型的节点,ie7以下不会包含非法嵌套子节点。childNodes只包含一级子节点,不包含后辈孙级以下的节点。

DOM节点的类型有很多种 12种。

元素.nodeType : 只读 属性 当前元素的节点类型
元素节点 : 1
属性节点 : 2
文本节点 : 3

元素.attributes : 只读 属性 属性列表集合

for (var i=; i<oUl.childNodes.length; i++) {

        if ( oUl.childNodes[i].nodeType ==  ) {
oUl.childNodes[i].style.background = 'red';
} }

元素.children : 只读 属性 子节点列表集合;标准下:只包含元素类型的节点;非标准下:只包含元素类型的节点。

元素.firstChild : 只读 属性 第一个子节点;标准下:firstChild会包含文本类型的节点;非标准下:只包含元素节点。

元素.firstElementChild : 只读 属性 标准下获取第一个元素类型的子节点。

元素.lastChild || 元素.lastElementChild :最后一个子节点

元素.nextSibling || 元素.nextElementSibling: 下一个兄弟节点

元素.previousSibling || 元素.previousElementSibling :上一个兄弟节点

元素.parentNode : 只读 属性 当前节点的父级节点。

元素.offsetParent : 只读 属性 离当前元素最近的一个有定位属性的父节点;如果没有定位父级,默认是body;ie7以下,如果当前元素没有定位默认是body,如果有定位则是html;ie7以下,如果当前元素的某个父级触发了layout,那么offsetParent就会被指向到这个触发了layout特性的父节点上。

元素.offsetLeft[Top] : 只读 属性 当前元素到定位父级的距离(偏移值);到当前元素的offsetParent的距离
                                  如果没有定位父级
                                            offsetParent -> body
                                            offsetLeft -> html

如果有定位父级
                                 ie7以下:如果自己没有定位,那么offsetLeft[Top]是到body的距离
                                             如果自己有定位,那么就是到定位父级的距离
                                             其他:到定位父级的距离。

元素的宽高:width height

      style.width : 样式宽
      clientWidth : 可视区宽  = 样式宽 + padding
      offsetWidth : 占位宽 = 样式宽 + padding + border = 可视区宽 + border

元素.getAttribute(属性名称); 方法 获取指定元素的指定属性的值

元素.setAttribute(属性名称,属性值); 方法 给指定元素指定的属性设置值

元素.removeAttribute(属性名称); 方法 移除指定的元素的指定的属性

document.createElement(标签名称); 创建元素

父级.removeChild(要删除的元素); 删除元素

父级.appendChild(要添加的元素) 方法 追加子元素

父级.insertBefore(新的元素,被插入的元素) 方法 在指定元素前面插入一个新元素;在ie下如果第二个参数的节点不存在,会报错;在其他标准浏览器下如果第二个参数的节点不存在,则会以appendChild的形式进行添加

 if ( oUl.children[] ) {
oUl.insertBefore( oLi, oUl.children[] );
} else {
oUl.appendChild( oLi );
}

父级.replaceChild(新节点,被替换节点) 替换子节点

appendChild,insertBefore,replaceChild都可以操作动态创建出来的节点,也可以操作已有节点

DOM的定义及DOM相关的更多相关文章

  1. 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。元素、属性和文本的树结构(节点树)。

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...

  2. 直接操作DOM一定比虚拟DOM操作耗时,diff算法,key值,虚拟 DOM的定义

    直接操作DOM一定比虚拟DOM操作耗时吗? 或者一次直接DOM操作一定比一次虚拟DOM操作耗时吗? 1)虚拟DOM的本质就是一个JS对象,虚拟DOM减少了真实DOM的操作,当修改数据的时候,就是修改虚 ...

  3. javascript中0级DOM和2级DOM事件模型浅析

    Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...

  4. python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)

    昨日内容回顾 1.三种引入方式 1.行内js <div onclick = 'add(3,4)'></div> //声明一个函数 function add(a,b){ } 2. ...

  5. 通俗易懂的来讲讲DOM——科普性质的DOM入门教程

    DOM这个东西很重要,不过初学的时候很容易蒙,什么Document.Element.Node用官方语言来解释根本就不是人话,只能在实践中硬着头皮一点一点尝试.今天要推荐的是一篇关于DOM的博客.说是教 ...

  6. 前端JavaScript(2) --常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍

    昨日内容回顾 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

  7. javascript中0级DOM和2级DOM事件模型浅析 分类: C1_HTML/JS/JQUERY 2014-08-06 15:22 253人阅读 评论(0) 收藏

    Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...

  8. [react] 什么是虚拟dom?虚拟dom比操作原生dom要快吗?虚拟dom是如何转变成真实dom并渲染到页面的?

    壹 ❀ 引 虚拟DOM(Virtual DOM)在前端领域也算是老生常谈的话题了,若你了解过vue或者react一定避不开这个话题,因此虚拟DOM也算是面试中常问的一个点,那么通过本文,你将了解到如下 ...

  9. dom core,html dom,css dom,jquery 中的dom操作

    前端开发中为达到某种目的,往往有很多方法:dom core,html dom,jquery; dom core/jquery主要通过函数调用的方式(getAttribute("属性名&quo ...

随机推荐

  1. 2014年辛星完全解读Javascript第五节 break和continue与错误处理

    先说一下break和continue的主要用法吧,break用于跳出循环,continue用于跳过该循环中的一个迭代.简单的说,就是break直接从该语句跳出,但是continue不会跳出该循环语句, ...

  2. JAVA中的各种 哈希码(HashCode) 与 equals方法在HIBERNATE的实际应用[转载]

    1.什么是哈希码(HashCode) 在Java中,哈希码代表对象的特征.例如对象 Java代码 String str1 = “aa”, str1.hashCode= 3104 String str2 ...

  3. js时间格式的转换

    function System_dateInit(value) {     if (value != null) {         var d = new Date(value);          ...

  4. 详解C#中的反射(转载)

    反射(Reflection) 2008年01月02日 星期三 11:21 两个现实中的例子: 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是 ...

  5. 2328: [HNOI2011]赛车游戏 - BZOJ

    先把一定要减的费用先减掉,就是b*s*len(上坡路),下坡路就设一个初速度,使耗油为0,如果没油了,就无法到达 然后考虑加速 对于长度为len的路,增加v的速度需要len*a*v的油,与len成正比 ...

  6. 深入js的面向对象学习篇(继承篇)——温故知新(三)

    写这篇有关继承的文章时,突然想起,几天前的面试.因为习惯在学习知识的时候加上自己的理解,很喜欢用自己话来解释,于是乎当面试被问起继承原理时,噼里啪啦一大堆都是自己组织的话,(也可能是因为个人紧张.外加 ...

  7. 2026-Keroro侵略地球

    描述 Keroro来侵略地球之前,曾跟Giroro伍长打赌:“我一个人灭掉整个地球给你看!”. 于是Keroro同学真的自己一个人来到地球开始他的侵略行动了.从K隆星出发之前,Keroro从Kurur ...

  8. 1.Getting Started with ASP.NET MVC 5

    Getting Started Start by installing and running Visual Studio Express 2013 for Web or Visual Studio ...

  9. 阿里巴巴Java面试题

    研二是需要找实习的时候了,因阿里有同学内推就直接参加了电话面试,不说其他的废话直接上问题,阿里的面试官还是不错的,和蔼可亲,为人谦虚,大牛什么都懂.(投的职位是java研发)1.java中所有类的父类 ...

  10. 最短路径算法之一——Floyd算法

    Floyd算法 Floyd算法可以用来解决任意两个顶点之间的最短路径问题. 核心公式为: Edge[i][j]=Min{Edge[i][j],Edge[i][k]+Edge[k][j]}. 即通过对i ...