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 相关文章推荐
通过event对象的fromElement属性解决热区设置主实体的一个bug
Dec 22 Javascript
JavaScript 继承机制的实现(待续)
May 18 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
angularJS中$apply()方法详解
Jan 07 Javascript
原生js实现类似弹窗抖动效果
Apr 02 Javascript
浅谈jQuery添加的HTML,JS失效的问题
Oct 05 Javascript
JS实现简单拖拽效果
Jun 21 Javascript
Next.js实现react服务器端渲染的方法示例
Jan 06 Javascript
vue开发环境配置跨域的方法步骤
Jan 16 Javascript
JavaScript生成一个不重复的ID的方法示例
Sep 16 Javascript
ElementUI之Message功能拓展详解
Oct 18 Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 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/22 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
PHP数据类型的总结分析
2013/06/13 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
一些常用的Javascript函数
2006/12/22 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
python分割和拼接字符串
2013/11/01 Python
python内存管理分析
2015/04/08 Python
Django验证码的生成与使用示例
2017/05/20 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
承诺书格式范文
2014/06/03 职场文书
学校与家长安全责任书
2014/07/23 职场文书
品牌转让协议书
2014/08/20 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
大学生个人总结范文
2015/02/15 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
刑事附带民事代理词
2015/05/25 职场文书
家长意见书
2015/06/04 职场文书