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. Linux 启动直接进入 console,

    我的电脑上有两块显卡,上次fedora更新后,自动安装了nvidia的驱动, 然后悲剧发生了.再也不能够正常进行图形界面了.所以需要进入CONSOLE. 1. 当系统启动时,停止grub menu自动 ...

  2. ENVI栅格文件增强后将LUT保存完输出img图像进行分类

    ENVI栅格文件储存 图像原始的DN(Digital Number)值记录图像的光谱信息,不能轻易更改。在窗口中显示的一般是经过拉伸等增强处理的LUT上的灰度值,在保存文件时,就有不同的方式。 1.  ...

  3. EXTJS 4.2 资料 控件之combo 联动

    写两个数据源: 1.IM_ST_Module.js { success:true, data:[ { ModuleId: '1', ModuleName: '资讯' } , { ModuleId: ' ...

  4. 【bzoj3110】[Zjoi2013]K大数查询

    Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置 ...

  5. iphone编程,使用代码结束程序

    (ios 4环境) 1.使用代码可以结束自己只有一种方式,而且apple不建议这样用,就是调用exit()函数.在2.0以前uiapplication类中有一个方法可以调用,但是现在已经没有了,而且如 ...

  6. 反射自动填充model

    public static T FillModel<T>(DataRow dr) { ) return default(T); T model = Activator.CreateInst ...

  7. 团体程序设计天梯赛-练习集L2-010. 排座位

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  8. Manifest 与TypeTag

    Manifest和TypeTag是要解决什么问题?   As with other JVM languages, Scala’s types are erased at compile time. T ...

  9. coco2d-js 多屏适配相关API

    setDesignResolutionSize() //设计分辨率大小及模式  setContentScaleFactor() //内容缩放因子 setSearchPaths() //资源搜索路径 g ...

  10. Get请求携带数据量的各种限制及解决办法、Post请求说明

    1.   Get请求携带数据量的各种限制及解决办法 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制.这个限制是特定的浏览器及服务器对它的限制. 到新公司处理 ...