您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

JavaScript中关于DOM的操作详解

2024/6/14 2:46:04发布42次查看
一、什么是dom
javascript由ecmascript、dom和bom三部分组成,其中dom代表描述网页内容的方法和接口,即文档对象模型(document object model)。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为dom,而树形结构就是我们常说的dom树。
维基百科中介绍dom更为准确:dom是一种跨平台和语言非依赖性的应用程序编程接口,即处理现在的html,xhtml或xml文档作为树结构,其中每个节点是一个对象,每个节点表示该文档的一部分。
二、dom节点
1.节点的类型
dom树是由许多不同类型的节点组成的,而这些节点类型都有一个nodetype值,我们可以通过nodetype值来判断我们获取的或想要的是不是对应类型的节点。
节点类型 元素节点(标签节点) 属性节点 文本节点(空格、换行、文字) 注释节点 document节点
nodetype值 1 2 3 8 9
除了通过nodetype值判断类型以外我们还可以通过nodename来查看元素节点和属性节点的节点名称,还有使用nadevalue来查看属性节点的属性值。
2.获取元素节点
document.getelementbyid(id); document.getelementbytagname(tagname); document.getelementbyclassname(classname);
通常想要在javascript中更改或使用hml中的元素节点时,都要先获取才可以调用,那么我们就是通过设置元素的id属性或class属性来获取,或是使用标签名获取。但是要注意的是getelementbyid()方法不能工作在xml中,在xml文档中,必须通过拥有id属性来进行搜索,而此类型必须在 xml dtd 中进行声明。
获取完我们想要的节点后,我们还可以通过节点的关系来操作其他节点,这里我们以p元素为初设元素节点来举例。
2.1 子节点
p.children(); p.childnodes();
获取p下面的子节点,而p.children()只能获取到是元素节点的子节点,而p.childnodes()会获取所有类型的子节点,也就是说会解析空白文本节点。
2.2 父节点
p.parentnode(); p.offsetparent();
获取p的父节点,p.offsetparent()获取的是具有定位属性的祖先节点,即从父节点开始查找,如果父节点没有定位属性,那么再找父节点的父节点,直到找到有定位属性的节点。
2.3 兄弟节点
//下一个兄弟节点 p.nextelementsibling(); p.nextsibling();//上一个兄弟节点 p.previouselementsibling(); p.previoussibling();
这里有没有element很关键,跟获取子节点一样,p.nextsibling()和p.previoussibling()会解析空白节点,会获取到p下面的空格或回车。
2.4 首尾子节点
//获取p的第一个子节点p.firstelementchild(); p.firstchild();//获取p的最后一个子节点p.lastelementchild(); p.lastelementchild();
区别同上。
3.节点操作
我们除了可以在html中添加、删除个修改节点,也可以在javascript中对节点进行操作。
3.1 创建节点
//创建节点/创建文本节点createelement(); createtextnode();
创建文本节点一般用来向元素节点中添加内容,它创建的是静态文本,不能像innerhtml一样带有html格式,所以creattextnode()更安全,而innertext又有浏览器兼容问题。
3.2 添加节点
我们创建的节点不会自动添加到html里,需要我们对创建的节点进行操作。
//向尾部添加子节点 appendchild(); //向目标节点之前添加insertbefore(newelement,targetelement);
insertbefore()第二个参数是可选参数,如果不写第二个参数那么就默认向尾部添加,即等同于appendchild();
3.3 替换
//将旧节点换为新节点replacechild(newelement,oldelement);
p.replacechild(newelement,oldelement) ,这里无论是新节点还是旧节点,都必须是p的子节点。
3.4 删除
removechild();
注意删除的是子节点。
3.5 克隆/复制
//深复制或浅复制clonenode(boolean);
当参数的布尔值为true时为深复制,即会复制节点本身以及它以下的所有子节点。
当参数的布尔值为false时为浅复制,只会复制节点自己本身。
3.6 判断
haschildnode();
判断是否有子节点,返回布尔值。
3.7 属性
//获取节点属性getattribute();//设置节点属性setattribute();//删除节点属性removeattribute();
要注意的一点就是class属性不能通过setattribute(); 设置。
三、dom的优缺点
dom的优点主要表现在:易用性强,并且遍历简单,支持xpath,增强了易用性。
dom的缺点主要表现在:效率低,解析速度慢,内存占用量过高。
以上就是javascript中关于dom的操作详解的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product