常用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 相关文章推荐
jQuery自定义事件的简单实现代码
Jan 27 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
Apr 02 Javascript
深入学习JavaScript中的原型prototype
Aug 13 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
Nov 24 Javascript
JavaScript常用数组算法小结
Feb 13 Javascript
js方法数据验证的简单实例
Sep 17 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
Sep 29 Javascript
javascript 封装Date日期类实例详解
May 28 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 Javascript
详解uniapp的全局变量实现方式
Jan 11 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
中国第一家无线电行
2021/03/01 无线电
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
js模拟类继承小例子
2010/07/17 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
react基本安装与测试示例
2020/04/27 Javascript
python和C语言混合编程实例
2014/06/04 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
StringBuilder和String的区别
2015/05/18 面试题
采购主管岗位职责
2014/02/01 职场文书
小学开学标语
2014/07/01 职场文书
法人委托书的范本格式
2014/09/11 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
文明礼仪主题班会
2015/08/13 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
2016大一新生军训感言
2015/12/08 职场文书
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers