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. URL详解

    浏览器因特网资源:URL是浏览器寻找信息时所需的资源位置,通过URL,应用程序才能找到并使用共享因特网上大量的数据资源. 大部分URL都遵循一种标准的格式: ①HTTP协议(http://或者http ...

  2. java基本知识小记(1)

    1.Java中的值传递 值传递意味着对于传给方法的每个参数都会制作一份副本然后将副本而不是原始值传递给方法并且通过参数的名进行引用. 注意:虽然传值机制对于所有参数类型都适用,但是他对对象类型的作用与 ...

  3. 【相当实用】如何让TortoiseSVN导出新增或修改过的文件

    当一个网站项目进入运营维护阶段以后,不会再频繁地更新全部源文件到服务器,这个时间的修改大多是局部的,因此更新文件只需更新修改过的文件,其他没有修改过的文件就没有必要上载到服务器.但一个稍微上规模的网站 ...

  4. 修改mysql默认字符编码出现的Job failed to start解决方法

    5.5以后的版本对字符编码方式修改的办法,原来在[mysqld]下的修改已经发生了变化,正确方式如下: [mysqld]下添加的应该为: character-set-server=utf8 colla ...

  5. kxbdSuperMarquee.js滚动的神器-推荐

    http://code.ciaoca.com/jquery/kxbdmarquee/ 版本:jQuery v1.3.2+ 查看 Demo 下载 jQuery kxbdMarquee 文档目录 使用方法 ...

  6. MySQL SQL中的安全问题

    一.SQL注入是一个很常见的问题:利用的原理是SQL语句中的 "or"操作符或者"/*"和"#"注释符.前者利用逻辑运算,或者利用MySQL ...

  7. PYTHON isinstance语法

    def obj_len(arg): #isinstance(),判断是否是某一类 if isinstance(arg,str) or (isinstance(arg,list)) or (isinst ...

  8. 关于int,integer初始值问题

  9. 关于用bootstrap显示查询的后台数据

    PrintWriter pw = response.getWriter(); pw.println(sb); pw.flush(); 由于用bootstrap查询数据,页面需要自身返回bootstra ...

  10. MySQL分库分表的一些技巧

    分表是分散数据库压力的好方法. 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库. 当然,首先要知道什么情况下,才需要分表.个人觉得单表记录条数达到百万到千万 ...