欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript DOM操作

程序员文章站 2022-08-09 16:10:42
操作DOM 由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。 始终记住DOM是一个树形结构。操作一个DOM节点实际上就是这么几个操作: 更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容; 遍历:遍历该DOM节 ......

操作dom

dom中节点类型
	document文档节点:代表整个网页,不代表任何html标记,但它是html的父节点
	element元素节点:指任何html标记。每一个html标记就称一个“元素节点”。它可以有文本节点和属性节点。
	attribute属性节点:指html标记的属性。
	text节点:是节点树的最低节点。
核心dom中的公共的属性和方法
	提示:核心dom中查找结点(标记),都是先从根节点开始的(html节点)。主要是针对于html4.0开发的。
html dom的新特性
	每一个html标记与元素对象的属性一一对应
	核心dom中的属性方法,元素对象都能用
html dom访问html元素的方法(最常用)
	getelementbyid("id名");
	getelementbytagname("tagname名"); //标记,和核心dom中nodename一样
	getelementbyclass("class名");
css的dom动态样式
	**使用js操作css中的各属性,js只能操作修改行内样式。对于类样式,可以通过classname来赋值。外联式无法操作**
	**style样式代替css样式**
	style对象属性与css属性的转换
		1.如果是一个单词,则直接写
		2.如果是多个单词,则第一个单词全小写,后面每个单词首字母大写,并去掉中划线。
dom中event对象

由于html文档被浏览器解析后就是一棵dom树,要改变html的结构,就需要通过javascript来操作dom。

始终记住dom是一个树形结构。操作一个dom节点实际上就是这么几个操作:

更新:更新该dom节点的内容,相当于更新了该dom节点表示的html的内容;

遍历:遍历该dom节点下的子节点,以便进行进一步操作;

添加:在该dom节点下新增一个子节点,相当于动态增加了一个html节点;

删除:将该节点从html中删除,相当于删掉了该dom节点的内容以及它包含的所有子节点。

在操作一个dom节点前,我们需要通过各种方式先拿到这个dom节点。最常用的方法是document.getelementbyid()和document.getelementsbytagname(),以及css选择器document.getelementsbyclassname()。

由于id在html文档中是唯一的,所以document.getelementbyid()可以直接定位唯一的一个dom节点。document.getelementsbytagname()和document.getelementsbyclassname()总是返回一组dom节点。要精确地选择dom,可以先定位父节点,再从父节点开始选择,以缩小范围。

演示:

// 返回id为'test'的节点:
var test = document.getelementbyid('test');

// 先定位id为'test-table'的节点,再返回其内部所有tr节点:
var trs = document.getelementbyid('test-table').getelementsbytagname('tr');

// 先定位id为'test-div'的节点,再返回其内部所有class包含red的节点:
var reds = document.getelementbyid('test-div').getelementsbyclassname('red');

// 获取节点test下的所有直属子节点:
var cs = test.children;

// 获取节点test下第一个、最后一个子节点:
var first = test.firstelementchild;
var last = test.lastelementchild;
第二种方法是使用queryselector()和queryselectorall(),需要了解selector语法,然后使用条件来获取节点,更加方便:

// 通过queryselector获取id为q1的节点:
var q1 = document.queryselector('#q1');

// 通过queryselectorall获取q1节点内的符合条件的所有节点:
var ps = q1.queryselectorall('div.highlighted > p');
注意:低版本的ie<8不支持queryselector和queryselectorall。ie8仅有限支持。

严格地讲,我们这里的dom节点是指element,但是dom节点实际上是node,在html中,node包括element、comment、cdata_section等很多种,以及根节点document类型,但是,绝大多数时候我们只关心element,也就是实际控制页面结构的node,其他类型的node忽略即可。根节点document已经自动绑定为全局变量document。