常用DOM整理
前言:
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+$/,'');
}
- js常用DOM操作
在博客园看到了苏夏写的常用DOM整理文章,地址:http://www.cnblogs.com/cabbagen/p/4579412.html,然后抽时间都试了一下这些常用的DOM操作.在这里记录一下. ...
- NiosII常用函数整理
NiosII常用函数整理 IO操作函数函数原型:IORD(BASE, REGNUM) 输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量函数说明:从基地址为BASE的设备中读取寄存器中偏 ...
- MAC机常用快捷键整理表格
MAC机常用快捷键整理表格 范围 快捷键 说明 图形 (Command 键)在某些 Apple 键盘上,此键也可能为标志() Control (Control 键) Alt Opt ...
- sublime常用快捷键整理(未完待续)
sublime常用快捷键整理: 基本操作 cmd+o 打开文件 cmd+w 关闭当前tab cmd+n 打开新页 cmd+shift+n 打开刚刚关闭的页签 一.选择命令 1.多个单词选择 cmd+d ...
- zendStudio常用快捷键整理
在来一发zendstudio的常用快捷键整理,今天心情不错哈哈 Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ct ...
- NSIS常用代码整理
原文 NSIS常用代码整理 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ 1 ;获取操作系统盘符 2 ReadEnvStr $R0 SYSTEMDRIVE ...
- javascript中字符串常用操作整理
javascript中字符串常用操作整理 字符串的操作在js中非常频繁,也非常重要.以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊...今天就对字符串的一些常用 ...
- Win7常用快捷键整理
Win7常用快捷键整理.. -------------------- Win + Pause:显示系统属性对话框 ------------------------------------ Win7系统 ...
- python 常用库整理
python 常用库整理 GUI 图形界面 Tkinter: Tkinter wxPython:wxPython pyGTK:PyGTK pyQt:pyQt WEB框架 django:django w ...
随机推荐
- Echart的angularjs封装
ehcart是百度做的数据图表,基于原生js.接口和配置都写的很好很易读,还可以用于商用. 下面正题 用原生js的话,引入echarts.js 无论是图表的样式设置,图表渲染,数据填充都是基于echa ...
- Android 打开系统最近任务及最近应用方法
Class serviceManagerClass; try { serviceManagerClass = Class.forName("android.os.ServiceManager ...
- 自定义不等高的cell-(storyboard)
对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持) 添加子控件和contentView之间的间距约束 设置tableViewCell的真实行高和估算行高 // 告诉tableView所有 ...
- C语言中两个相等的char值比较 结果为false
unsigned char appendChar1[] = {0xD3, 0xD0, 0xCF, 0xDE, 0xB9, 0xAB, 0xCB, 0xBE}; char appendChar2[] = ...
- Google搜索的配置方法
在百度慢慢沦落为广告商的搜索引擎之后,对于一个追求技术的程序员,他所要追求的搜索引擎永远都应该是google. 下面保存一下我使用的能够FQ实现google搜索的方法和一些面试的测试账号. 小飞机sh ...
- 本地网址连不上远程mysql问题
问题:host 'XXX.XXX.XXX.XXX'is not allowed to connect to this MySQL server 解决办法: 进入远程mysql #mysql -u ro ...
- 解析处理常用json数据总结
工作中用ajax接收到接口返回的数据需要进行解析后操作,这里总结一下平时的方法,用的jquery,复制下来的页面把引入的路径改一下即可. <!DOCTYPE html> <html ...
- Prisma
AI修图艺术:Prisma背后的奇妙算法 | 深度 投递人 itwriter 发布于 2016-07-30 12:47 评论(2) 有712人阅读 原文链接 [收藏] « » 雷锋网按:本文作者系图普 ...
- Github上的优秀安卓项目
http://www.cnblogs.com/hawkon/p/3593709.html
- DirectUI实现原理
一,概念 传统的Windows窗口程序对每一个控件都会创建一个句柄,而DUI技术奖所有控件都绘制在一个窗体上,这些控件的逻辑和绘图方式必须自己进行编写和封装,所以这些控件都是无句柄的. DUI技术的实 ...