DOM 基本方法


Posted in Javascript onJuly 18, 2009

直接引用结点
1.document.getElementById(id);
--在文档里面通过id来找结点
2.document.getElementByTagName(tagName);
--返回一个数组,包含对这些结点的引用
--如:document.getElementByTagName("span");将返回所有类型为span的结点

二.间接引用结点
3.element.childNodes
--返回element的所有子结点,可以用element.childNodes[i]的方式来调用
--element.firstChild=element.childNodes[0];
--element.lastChild=element.childNodes[element.childNonts.length-1];
4.element.parentNode
--引用父结点
5.element.nextSibling; //引用下一个兄弟结点
element.previousSibling; //引用上一个兄弟结点

三.获得结点信息
6.nodeName属性获得结点名称
--对于元素结点返回的是标记名称,如:<a herf><a>返回的是"a"
--对于属性结点返回的是属性名称,如:class="test" 返回的是test
--对于文本结点返回的是文本的内容
7.nodeType返回结点的类型
--元素结点返回1
--属性结点返回2
--文本结点返回3
8.nodeValue返回结点的值
--元素结点返回null
--属性结点返回undefined
--文本结点返回文本内容
9.hasChildNodes()判断是否有子结点
10.tagName属性返回元素的标记名称
--这个属性只有元素结点才有,等同于元素结点的nodeName属性

四.处理属性结点
11.每个属性结点都是元素结点的一个属性,可以通过(元素结点.属性名称)访问
12.利用setAttribute()方法给元素结点添加属性
--elementNode.setAttribute(attributeName,attributeValue);
--attributeName为属性的名称,attributeValue为属性的值
13.使用getAttribute()方法获得属性值
--elementNode.getAttribute(attributeName);

五.处理文本结点
14.innerHTML和innerText属性,这两个方法相信大家都很熟悉,不介绍了,值得注意的是无论是ie还是firefox都容易把空格、换行、制表符等当成文本结点。所有一般通过element.childNodes[i]引用文本结点的时候,一般要处理:
<script language"javaScript" type="text/javascript">
function cleanWhitespace(element)
{
for(var i=0; i<element.childNotes.length; i++)
{
var node = element.childNodes[i];
if(node.nodeType == 3 && !/\S/.test(node.nodeValue))
{
node.parentNode.removeChild(node);
}
}
}
</script>

六.改变文档的层次结构
15.document.createElement()方法创建元素结点
--如:document.createElement("Span");
16.document.createTextNode()方法创建文本结点
--如:document.createTextNode(" "); //注:他不会通过html编码,也就是说这里创建的不是空格,而是字符串 
17.使用appendChild()方法添加结点
--parentElement.appendChild(childElement);
18.使用insertBefore()方法插入子节点
--parentNode.insertBefore(newNode,referenceNode);
--newNode为插入的节点,referenceNode为将插入的节点插入到这之前
19.使用replaceChild方法取代子结点
--parentNode.replaceChild(newNode,oldNode);
--注:oldNode必须是parentNode的子结点,
20.使用cloneNode方法复制结点
--node.cloneNode(includeChildren);
--includeChildren为bool,表示是否复制其子结点
21.使用removeChild方法删除子结点
--parentNode.removeChild(childNode);

七.表格的操作
--注:ie中无法直接将一个完整的表格结点插入到文档中
22.添加行和单元格
var _table=document.createElement("table"); //创建表
table.insertRow(i); //在table的第i行插入行
row.insertCell(i); //在row的第i个位置插入单元格
23.引用单元格对象
--table.rows[i].cells[i];
24.删除行和单元格
--table.deleteRow(index);
--row.deleteCell(index);
25.交换两行获得两个单元格的位置
node1.swapNode(node2);
--这个方法在firefox中将出错
通用方法:
function swapNode(node1,node2)
{
var _parent=node1.parentNode;
var _t1=node1.nextSubling;
var _t2=node2.nextSubling;
if(_t1)parent.insertBefore(node2,_t1);
else _parent.appendChild(node2);
if(_t2)parent.insertBefore(node1,_t2);
else _parent.appendChild(node1);
}

删除所有空白结点:
<script language"javaScript" type="text/javascript">
function cleanWhitespace(element)
{
for(var i=0; i<element.childNotes.length; i++)
{
var node = element.childNodes[i];
if(node.nodeType == 3 && !/\S/.test(node.nodeValue))
{
node.parentNode.removeChild(node);
}
}
}
</script>
nodetype=3结点类型是文本\s匹配所有空白
将结点插入指定索引位置
function insertAt(parentNode,newNode,index)
{
if(!parentNode.hasChildNodes())
{
parentNode.appendChild(newNode);
return newNode;
}
//使用try捕获索引不存在出现的异常
try{
parentNode.insertBefore(newNode,parentNode.childNodes[index]);
}
catch(e){
return null;
}
return newNode;

Javascript 相关文章推荐
Javascript面向对象编程
Mar 18 Javascript
Javascript中自动切换焦点实现代码
Dec 15 Javascript
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
Jan 03 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
JavaScript多图片上传案例
Sep 28 Javascript
jquery判断复选框是否选中进行答题提示特效
Dec 10 Javascript
BootStrap和jQuery相结合实现可编辑表格
Apr 21 Javascript
jQuery-mobile事件监听与用法详解
Nov 23 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
Nov 15 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
在vue中动态修改css其中一个属性值操作
Dec 07 Vue.js
javascript 全角转换实现代码
Jul 17 #Javascript
JavaScript 创建对象
Jul 17 #Javascript
prototype 学习笔记整理
Jul 17 #Javascript
表单元素事件 (Form Element Events)
Jul 17 #Javascript
优化 JavaScript 代码的方法小结
Jul 16 #Javascript
Javascript 事件流和事件绑定
Jul 16 #Javascript
js 对象是否存在判断
Jul 15 #Javascript
You might like
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
php一些公用函数的集合
2008/03/27 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
php 验证码实例代码
2010/06/01 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Python实现保证只能运行一个脚本实例
2015/06/24 Python
Python实现学校管理系统
2018/01/11 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
团队口号大全
2014/06/06 职场文书
就业协议书怎么填
2014/09/15 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
详解Java实现数据结构之并查集
2021/06/23 Java/Android
Python+tkinter实现高清图片保存
2022/03/13 Python