DOM:Document Object Model文档对象模型,用于让程序(js)取操作页面中的元素。DOM节点类型有12种。

(一)属性

一、子节点操作
1.所有子节点
(1)元素.childNodes ==>只读,元素子节点列表集合(只包含一级子节点,不包含后辈孙级以下节点)
标准浏览器:包含了文本和元素类型节点,也会包含非法嵌套的子节点。
非标准浏览器:只包含元素类型节点,IE7以下不包含非法嵌套的子节点。
兼容处理:由于文本节点无背景等样式,故在设置样式前用.nodeType判断节点类型。
元素.nodeType得到节点的类型:
1--元素节点;
2--属性节点;
3--文本节点;
元素.attributes ==>只读,获取元素属性名,返回属性列表集合
元素.attributes[n].name ==>得到对应的属性值
(2)元素.children ==>只读,子节点列表集合
标准浏览器下和非标准浏览器下都只包含元素类型的节点,把非法嵌套的标签设置为孙节点。
因此,获取子节点多采取这种方式。
2.第一个子节点
(1)元素.firstChild ==>只读,元素的第一个子节点
标准浏览器:会包含文本类型节点
非标准浏览器:只包含元素类型节点
(2)元素.firstElementChild ==>只读,第一个子节点
标准浏览器:获取第一个元素类型的子节点
非标准浏览器:无此属性
兼容处理:var Ofirst=元素.firstElementChild||元素.firstChild(当元素下无子节点时,此处理方式有问题,会得到

元素下的文本节点,故尽量采用此法:元素.children[0].style.background='red')
3.最后一个子节点
元素.lastChild
元素.lastElementChild
兼容性问题及处理同第一个子节点方式

二、兄弟节点操作
1.元素的下一个兄弟节点
元素.nextSibling
元素.nextElementSibling
兼容性问题及处理同第一个子节点方式
2.元素的上一个兄弟节点
元素.previousSibling
元素.previousElementSibling
兼容性问题及处理同第一个子节点方式

三、父节点操作
1.元素.parentNode ==>只读,当前元素的父节点(无兼容性问题)
2.元素.offsetParent ==>只读,离当前元素最近的一个有定位属性的父节点;如果没有定位的父级,默认为body;IE7以

下,如果当前元素有定位则父节点是HTML;IE7以下,如果当前元素的某个父级触发了layout,那么offsetParent就会被

指向到这个触发了layout特性的父节点上。
3.元素.offsetLeft(offsetTop) ==>只读,当前元素到定位父级的偏移值
当有定位父级时:
IE7及以下:
(1)如果自己无定位,那么该属性是到body的距离
(2)如果自己有定位,那么就是到定位父级的距离
其他浏览器:到定位父级的距离
当父级无定位时:
offsetParent:body
offsetLeft,offsetTop:html

四、宽高属性
元素.style.width/height ==>元素的样式宽/高
元素.style.clientWidth/Height ==>元素的可视宽/高=样式宽/高+padding
元素.style.offsetWidth/Height ==>元素的占位宽/高=样式宽/高+padding+border

获取元素绝对位置封装函数:因为不知道该元素的父级是否有定位。
function getPos(obj){
   var pos={left:0;top:0};
   while(obj){
      pos.left+=obj.offsetLeft;
      pos.top+=obj.offsetTop;
      obj=obj.offsetParent;
          }
      return pos;
}

(二)方法

一、动态创建子节点
document.createElement('元素名称') ==>创建元素,还不存在页面里
将元素添加到页面中:
(1)父级.appendChild('要添加的元素')
(2)父级.insertBefort('要添加的元素','被插入的元素') ==>在指定元素前插入一个新元素

二、删除子节点
父级.remove('要删除的子节点')

三、替换子节点
被替换的节点父级.replace('新节点','被替换的节点')

总结:appendChild,insertBefore,replaceChild都可以操作动态创建出来的节点,也可以操作已经存在的节点。

DOM相关属性,方法,兼容性问题处理小析的更多相关文章

  1. javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法

    * offsetWidth 水平方向 width + 左右padding + 左右border-width * offsetHeight 垂直方向 height + 上下padding + 上下bor ...

  2. Dom属性方法

    一.javascript的三大核心 1.ECMAScript js的语法标准 2.DOM Document object Model 文档对象模型,提供的方法可以让js操作html标签 3.BOM B ...

  3. JavaScript (JS)基础:BOM 浅析 (含window对象相关基本方法、属性解析)

    ① window对象(Math方法也属于window对象): window对象是JavaScript中的顶级对象,所有定义在全局作用域中的变量.函数都会变成window对象的属性和方法,window对 ...

  4. JS操作DOM元素属性和方法

    Dom元素基本操作方法API,先记录下,方便以后使用. W3C DOM和JavaScript很容易混淆不清.DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本来访 ...

  5. SVG DOM常用属性和方法介绍(1)

    12.2  SVG DOM常用属性和方法介绍 将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析 ...

  6. vue第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件)

    第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件) #课程目标 掌握vue实例的相关属性和方法的含义和使用 了解vue的数据响应原理 熟悉创建组件,了解全局 ...

  7. jQuery操纵DOM元素属性 attr()和removeAtrr()方法使用详解

    jQuery操纵DOM元素属性 attr()和removeAtrr()方法使用详解 jQuery中操纵元素属性的方法: attr(): 读或者写匹配元素的属性值. removeAttr(): 从匹配的 ...

  8. Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试

    我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...

  9. jsp:和属性相关的方法,请求的转发,重定向

    jsp中与属性相关的方法: 方法: void setAttribute(String name, Object o): 设置属性 Object getAttribute(String name):获取 ...

随机推荐

  1. noip2015 运输计划

    描述 公元 2044 年,人类进入了宇宙纪元.L 国有 nn 个星球,还有 n−1n−1 条双向航道,每条航道建立在两个星球之间,这 n−1n−1 条 航道连通了 L 国的所有星球. 小 P 掌管一家 ...

  2. HTML兼容问题——HACK技术

    有话先说:本文的目的主要是向大家描述一下我们在遇见IE8版本一下以及Firefox兼容的问题. 针对不同的浏览器写不同的CSS的过程,这就叫CSS hack,也叫写CSS hack,相信您会对一些比较 ...

  3. 前端学习笔记 - Css初级篇

    有话先说:我是一只菜鸟,一只都是,从前是现在也是. CSS中的会计元素与行内元素 块级元素特性:占据一整行,总是重起一行并且后面的元素也必须另起一行显示.内联元素特性:和其他内联元素显示在同一行. 可 ...

  4. Linux进程间通信(二):信号集函数 sigemptyset()、sigprocmask()、sigpending()、sigsuspend()

    我们已经知道,我们可以通过信号来终止进程,也可以通过信号来在进程间进行通信,程序也可以通过指定信号的关联处理函数来改变信号的默认处理方式,也可以屏蔽某些信号,使其不能传递给进程.那么我们应该如何设定我 ...

  5. python嵌套函数、闭包与decorator

    1 一段代码的执行结果不光取决与代码中的符号,更多地是取决于代码中符号的意义,而运行时的意义是由名字空间决定的.名字空间是在运行时由python虚拟机动态维护的,但是有时候我们希望能将名字空间静态化. ...

  6. phpcms

    phpcms 织梦 帝国cms

  7. 《linux命令》ps -aux详细解释

    本文转载自http://blog.chinaunix.net/uid-21516619-id-1824945.html 显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) 启动这个进程的用户 ...

  8. Effective C++ -----条款55:让自己熟悉Boost

    Boost 是一个社群,也是一个网站.致力于免费.源码开放.同僚复审的C++ 程序库开发.Boost 在C++ 标准化过程中扮演深具影响力的角色. Boost 提供许多TR1 组件实现品,以及其他许多 ...

  9. yii2.0的分页和排序

    //排序 $sort = new Sort([ 'attributes' => [ 'age' => [ 'asc' => ['age' => SORT_ASC], 'desc ...

  10. 【XLL 框架库函数】 TempActiveColumn/TempActiveColumn12

    创建一个包含所有激活工作表列的 XLOPER/XLOPER12 LPXLOPER TempActiveColumn(BYTE col); LPXLOPER12 TempActiveColumn12(C ...