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倒计时代码
Aug 12 Javascript
javaScript arguments 对象使用介绍
Oct 18 Javascript
node.js中的fs.symlinkSync方法使用说明
Dec 15 Javascript
javascript中return,return true,return false三者的用法及区别
Nov 17 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
ReactNative Image组件使用详解
Aug 07 Javascript
js异步编程小技巧详解
Aug 14 Javascript
jQuery实现菜单栏导航效果
Aug 15 jQuery
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
Jan 27 jQuery
Node.js对MongoDB进行增删改查操作的实例代码
Apr 18 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
Jul 07 Javascript
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
那些年一起学习的PHP(二)
2012/03/21 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python输出电脑上所有的串口名的方法
2019/07/02 Python
python cumsum函数的具体使用
2019/07/29 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
Python实现代码块儿折叠
2020/04/15 Python
Python __slots__的使用方法
2020/11/15 Python
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
致跳高运动员广播稿
2014/01/13 职场文书
幼儿园评语大全
2014/04/17 职场文书
关于感恩的作文
2019/08/26 职场文书
总结Java对象被序列化的两种方法
2021/06/30 Java/Android
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
python中 .npy文件的读写操作实例
2022/04/14 Python