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 相关文章推荐
复制小说文本时出现的随机乱码的去除方法
Sep 07 Javascript
JavaScript中去掉数组中的重复值的实现方法
Aug 03 Javascript
javascript打开word文档的方法
Apr 16 Javascript
node.js中的fs.lchown方法使用说明
Dec 16 Javascript
使用requestAnimationFrame实现js动画性能好
Aug 06 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
Aug 25 Javascript
jQuery实现带动画效果的多级下拉菜单代码
Sep 08 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
Sep 15 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
Mar 25 Javascript
详解require.js配置路径的用法和css的引入
Sep 06 Javascript
浅谈小程序 setData学问多
Feb 20 Javascript
JavaScript实现简单随机点名器
Nov 21 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 Mysql类 可以参考学习熟悉下
2009/06/21 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
关于vue-router路径计算问题
2017/05/10 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
Python continue语句用法实例
2014/03/11 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Python爬虫代理IP池实现方法
2017/01/05 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
有趣的广告词
2014/03/18 职场文书
大型演出策划方案
2014/05/28 职场文书
啤酒节策划方案
2014/05/28 职场文书
新闻学专业求职信
2014/07/28 职场文书
社区党员公开承诺书
2014/08/30 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
民事起诉状范文
2015/05/19 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
电力安全学习心得体会
2016/01/18 职场文书