常用DOM整理


Posted in Javascript onJune 16, 2015

前言:

html为document搭建了一棵DOM树,这棵树就是有一系列Node节点所构成的。他为我们定义了文档的结构。

Node类型:

Node.ELEMENT_NODE(1);      //元素节点较常用
Node.ATTRIBUTE_NODE(2);    //属性节点较常用
Node.TEXT_NODE(3);          //文本节点较常用
Node.CDATA_SECTION_NODE(4);
Node.ENTITY_REFERENCE_NODE(5);
Node.ENTITY_NODE(6);
Node.PROCESSING_INSTRUCTION_NODE(7);
Node.COMMENT_NODE(8);
Node.DOCUMENT_NODE(9);   //文档节点较常用
Node.DOCUMENT_TYPE_NODE(10);
Node.DOCUMENT_FRAGMENT_NODE(11);
Node.NOTATION_NODE(12);

相关函数:

1、取得节点:

 document.getElementById('element');
 document.getElementsByTagName('element');         返回类数组对象
 document.getElementsByName('element');            返回类数组对象
 document.getElementsByClassName('className')      返回类数组对象,IE7及以下并不支持;
 document.querySelectorAll('class' | 'element')    返回类数组对象

2、遍历节点

 查找子节点:element.childNodes        返回类数组对象
 查找第一个子节点:element.firstChild
 查找最后一个子节点:element.lastChild
 查找父元素:element.parentNode
 查找前一个兄弟元素: element.previousSibling
 查找后一个兄弟元素: element.nextSibling

3、获取节点信息

 获取元素或者属性节点的标签名称:elementNode.nodeName
 获取文本节点的内容:    textNode.nodeValue;
 获取并设置元素节点的内容(可能会包含HTML标签):  elementNode.innerHTML
 获取并设置元素节点的纯文本内容:element.innerText(IE) | element.textContent(FF) 
 获取属性节点的值:      attrNode.getAttribute(AttrName);
 设置属性节点的值:      attrNode.setAttribute(AttrName,AttrValue);
 获取节点的类型:        node.nodeType;
  元素节点: 1;
  属性节点: 2;
  文本节点: 3;
  文档节点: 9;
  注释节点: 8;

4、操作节点

 创建元素节点:       document.createElement('element');
 创建文本节点:       document.createTextNode('text');
 创建属性节点:       document.createAttribute('attribute');
 删除节点:               node.remove();
 删除子节点:           parentNode.removeChild(childNode);
 插入节点:               parentNode.appendChild(childNode);  //插入到父节点的尾部
                             parentNode.insertBefore(newNode,existingNode)  //插入到已存在节点的前面;
 克隆节点:               node.cloneNode([true])     //传入true为深度复制
 替换节点:               parentNode.replaceChild(newNode,oldNode);

相关拓展:

1、由于IE低版本浏览器和其他浏览器在处理DOM中存在不兼容,因此要做一些简单的封装处理。

//=================
function getElementChildren(element) {
   var children = [],
   oldChildNodes = element.childNodes;
   for(var i=0, len=oldChildNodes.length; i<len; i+=1) {
     if(oldChildNodes[i].nodeType == 1) {
        children.push(oldChildNodes[i]);
     }
   }
 return children;
}
 
//==================
function getElementNext(element) {
   var next = element.nextSibling || null;
     if(next) {
       if(next.nodeType == 1) {
          return next;
       } else {
          return arguments.callee(next);
       }
     } else {
     throw new Error("下一个兄弟元素不存在!");
     }
}
 
//======================
function getElementPrev(element) {
   var prev = element.previousSibling || null;
   if(prev) {
     if(prev.nodeType == 1) {
       return prev;
     } else {
       return arguments.callee(prev);
     }
   } else {
     throw new Error("上一个兄弟元素不存在!");
   }
}

2、操作DOM元素的样式
 

//=========================
function getElementStyle(element,styleName) {
   if(typeof getComputedStyle != 'undefined') {
     return getComputedStyle(element,null)[styleName];
   } else {
     return element.currentStyle[styleName];
   }
}
 
//==========================
function addClass(element,className) {
   element.className += className;
}
 
//==========================
function removeClass(element,removeClassName) {
   var classStr = element.className;
   element.className = classStr.replace(removeClassName,'').split(/\s+/).join(' ').replace(/^\s+/,'').replace(/\s+$/,'');
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
一段实时更新的时间代码
Jul 07 Javascript
Prototype使用指南之base.js
Jan 10 Javascript
javascript 数组排序函数sort和reverse使用介绍
Nov 21 Javascript
js中arguments的用法(实例讲解)
Nov 30 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
Aug 03 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
Jan 13 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
详解搭建一个vue-cli的移动端H5开发模板
Jan 17 Javascript
vue+koa2搭建mock数据环境的详细教程
May 18 Javascript
AngularJS学习笔记之ng-options指令
Jun 16 #Javascript
在JavaScript的正则表达式中使用exec()方法
Jun 16 #Javascript
JavaScript正则表达式之multiline属性的应用
Jun 16 #Javascript
AngularJS学习笔记之基本指令(init、repeat)
Jun 16 #Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
Jun 16 #Javascript
javascript验证邮件地址和MX记录的方法
Jun 16 #Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 #Javascript
You might like
smarty内置函数config_load用法实例
2015/01/22 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
jquery获取transform里的值实现方法
2017/12/12 jQuery
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
python有证书的加密解密实现方法
2014/11/19 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
python代码过长的换行方法
2018/07/19 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
李宁官方网店:中国运动品牌
2017/11/02 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
优秀党员主要事迹
2014/01/19 职场文书
小学生学习感言
2014/03/10 职场文书
团代会宣传工作方案
2014/05/08 职场文书
教代会开幕词
2015/01/28 职场文书
SQLServer之常用函数总结详解
2021/08/30 SQL Server
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android