常用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 相关文章推荐
广告显示判断
Aug 31 Javascript
ExtJS的拖拽效果示例
Dec 09 Javascript
详解AngularJS中的作用域
Jun 17 Javascript
JavaScript脚本库编写的方法
Dec 09 Javascript
基于原生JS实现图片裁剪
Aug 01 Javascript
超实用的javascript时间处理总结
Aug 16 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
Sep 14 Javascript
Vue2.0结合webuploader实现文件分片上传功能
Mar 09 Javascript
解决vue.js this.$router.push无效的问题
Sep 03 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
Dec 09 Javascript
JS中call()和apply()的功能及用法实例分析
Jun 28 Javascript
Vue.js 无限滚动列表性能优化方案
Dec 02 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
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
layui文件上传实现代码
2017/05/20 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
python文件名和文件路径操作实例
2017/09/29 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
python实现电子书翻页小程序
2019/07/23 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
is_file和file_exists效率比较
2021/03/14 PHP
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
办理收楼委托书范本
2014/10/09 职场文书
公司经营目标责任书
2015/01/29 职场文书
交通安全教育主题班会
2015/08/12 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js
pandas中pd.groupby()的用法详解
2022/06/16 Python