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. 关于js中的时间处理

    关于js编程, 主要是, 绝大部分是用 jquery. 但是, js原生的一些方法和属性也是要掌握的, 这个只是在 遇到的时候, 记一下就好了, 如: event的relatedTarget属性: 主 ...

  2. 大熊君大话NodeJS之------Connect中间件模块(第一季)

    一,开篇分析 截止到今天来说,NodeJS系列文章已经有将近十篇了,让我们回顾一下: (1),大熊君大话NodeJS之开篇------Why NodeJS(将Javascript进行到底) (2),大 ...

  3. 惊艳!9个不可思议的 HTML5 Canvas 应用试验

    HTML5 <canvas> 元素给网页中的视觉展示带来了革命性的变化.Canvas 能够实现各种让人惊叹的视觉效果和高效的动画,在这以前是需要 Flash 支持或者 JavaScript ...

  4. Flex Builder快捷键

    Flex几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/) 快速修正:Ctrl+1 单词补全:Alt+/ 打开外部Java文档:Shift+F2 显示搜索对话框:Ctr ...

  5. 微信"流量红包"的玩法攻略 广东移动用户有福啦

    前面我们说了广东移动联合微信正式推出流量红包业务,移动终于hold不住了,想要借此挽回一些些损失.只可惜,现在只是广东小范围测试,其他地区的用户暂时还没有这等福利.那么微信"流量红包&quo ...

  6. redis中的key设置过期时间

    EXPIRE key seconds 为给定  key  设置生存时间,当  key  过期时(生存时间为  0  ),它会被自动删除. 在 Redis 中,带有生存时间的  key  被称为『易失的 ...

  7. 完整的PHP MYSQL数据库类

    <?php class mysql {     private $db_host; //数据库主机     private $db_user; //数据库用户名     private $db_ ...

  8. C和指针 第九章 字符串 字符 字节

    C语言中没有字符串类型,字符串是以NUL结尾的字符数组组成的. 高级字符串查找: //计算字符串起始部分,有多少字符是在group中 size_t strspn(char const * str, c ...

  9. Uva 2319

    理解:区域覆盖.假设该点在勘测半圆的边缘,求出与该点可在一个半圆的坐标范围l,r,然后,for 一次判断 #include<cstdio> #include<algorithm> ...

  10. 分享一个Visual Studio的背景插件,让堆码更富情趣

    忘记一件重要的事情,我使用的是VS 2012版,其他更高版本应该是可以找到的,以下版本就不清楚了.有可能找不到,见谅,也不是我开发的,只是偶尔碰到,拿出来让大家知道. 上周某日,新生命群里面还是一如既 ...