常用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 ...
随机推荐
- win7充分利用cpu来提供计算机性能
在任务栏左下角点击开始菜单,在运行框内输入msconfig,在弹出的窗口点击“高级选项”,接着会弹出一个新窗口,我们勾选“处理器数”,在下拉菜单中按照自己的电脑配置进行选择,现在双核比较常见,当然也有 ...
- 【27前端】CSS Reset
CSS reset就像是一种宁可错杀三千不可放过一个的做法. 一个最简单粗暴的css reset解决方案 *{ margin:0; padding:0; } 多余的话我就不再累赘,想要更多可以参考我的 ...
- 使用VS2003 发送Email
使用VS2003发送Email与之后VS2005版本及以上VS版本不一样,记录一下, 需要引用using System.Web.Mail; public void SendEmail() { try ...
- js提取整数部分,移除首末空格
给Object.prototype增加方法可使该方法对所有对象可用,这样的方式对函数.数组.字符串.数字.正则表达式和布尔值同样适用.比如说为Function.prototype增加方法来使得改方法对 ...
- linux 下 安装nexus
1. 获得root权限 [ferrari@localhost ~]$ su - 2. 下载nexus集成版 [root@localhost ~]# cd /usr/local [root@l ...
- intial-scale=1的含义
meta name="viewport" content="width=device-width,initial-scale=1.0" 解释 <meta ...
- 安装 Archlinux 小记
故事的背景 开始的时候装的 win8 + ubuntu 双系统,但是慢慢感觉只要有 windows 存在,在 Linux 上遇到问题了就想逃回去. 在一次 GDG 的演讲中听到的: 趁现在还年轻,还有 ...
- 安装gstreamer
安装gstreamerglib2.44.0locate libffi.soexport LIBFFI_CFLAGS=-L/opt/vagrant/embedded/lib/./confiure./co ...
- php 验证身份证有效性,根据国家标准GB 11643-1999 15位和18位通用
//验证身份证是否有效 function validateIDCard($IDCard) { if (strlen($IDCard) == 18) { return check18IDCard($ID ...
- string和整数转换
tostring(int) fromstring(string ) c++11新方式 stod Convert string to double (function template ) stold ...