常用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 相关文章推荐
原生js 秒表实现代码
Jul 24 Javascript
DIV+CSS+JS不间断横向滚动实现代码
Mar 19 Javascript
javascript如何动态加载表格与动态添加表格行
Nov 27 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
Jul 10 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
Dec 18 Javascript
JavaScript中object和Object的区别(详解)
Feb 27 Javascript
JS常见算法详解
Feb 28 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
Sep 12 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
极典R601SW收音机
2021/03/02 无线电
PHP新手上路(十二)
2006/10/09 PHP
PHP 快速排序算法详解
2014/11/10 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
javascript 单选框,多选框美化代码
2008/08/01 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
vue h5移动端禁止缩放代码
2019/10/28 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
方正Java笔试题
2014/07/03 面试题
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
企业项目策划书
2014/01/11 职场文书
一年级班主任寄语
2014/01/19 职场文书
教师业务学习制度
2014/01/25 职场文书
经典商业广告词
2014/03/13 职场文书
太太口服液广告词
2014/03/20 职场文书
甜品店创业计划书
2014/08/14 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS