常用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 相关文章推荐
国外Lightbox v2.03.3 最新版 下载
Oct 17 Javascript
再谈querySelector和querySelectorAll的区别与联系
Apr 20 Javascript
JS操作iframe里的dom(实例讲解)
Jan 29 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
Jun 07 Javascript
jQuery事件绑定和委托实例
Nov 25 Javascript
JavaScript实现梯形乘法表的方法
Apr 25 Javascript
javascript跨域的方法汇总
Oct 23 Javascript
JavaScript学习笔记之数组随机排序
Mar 23 Javascript
你应该了解的JavaScript Array.map()五种用途小结
Nov 14 Javascript
微信小程序点餐系统开发常见问题汇总
Aug 06 Javascript
javascript操作元素的常见方法小结
Nov 13 Javascript
解决vuecli3中img src 的引入问题
Aug 04 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
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
pandas 时间格式转换的实现
2019/07/06 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
python二维键值数组生成转json的例子
2019/12/06 Python
Pytorch 实现权重初始化
2019/12/31 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
前厅收银主管岗位职责
2014/02/04 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
色戒观后感
2015/06/12 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
SQL Server删除表中的重复数据
2022/05/25 SQL Server
服务器SVN搭建图文安装过程
2022/06/21 Servers