常用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 相关文章推荐
JavaScript静态的动态
Sep 18 Javascript
javascript 24小时弹出一次的代码(利用cookies)
Sep 03 Javascript
javascript的console.log()用法小结
May 31 Javascript
解决js正则匹配换行问题实现代码
Dec 10 Javascript
jQuery中:enabled选择器用法实例
Jan 04 Javascript
JavaScript实现信用卡校验方法
Apr 07 Javascript
基于JavaScript实现 网页切出 网站title变化代码
Apr 03 Javascript
jQuery UI制作选项卡(tabs)
Dec 13 Javascript
Vue2.0权限树组件实现代码
Aug 29 Javascript
angular 未登录状态拦截路由跳转的方法
Oct 09 Javascript
js回调函数仿360开机
Dec 26 Javascript
Vue3中的Refs和Ref详情
Nov 11 Vue.js
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
PHP三元运算符的结合性介绍
2012/01/10 PHP
php实现httpRequest的方法
2015/03/13 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
js replace正则表达式应用案例讲解
2013/01/17 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
js+css实现全屏侧边栏
2020/06/16 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
详解KMP算法以及python如何实现
2020/09/18 Python
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
编辑个人求职信范文
2013/09/21 职场文书
自荐信如何“自荐”
2013/10/24 职场文书
教育技术职业规划范文
2014/03/04 职场文书
班主任高考寄语
2015/02/26 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技