DOM

tech2022-12-01  90

DOM简介

文档对象模型,是w3c组织推荐的处理可扩展标记语言的标准编程接口。利用DOM可以完成对HTML文档内所有元素的获取,访问,标签属性和样式的设置等操作。

DOM树

DOM中将HTML文档视为树结构,所有被称之为文档树模型,把文档映射成树形结构

文档:一个页面就是一个文档元素:页面中的所有标签都是元素节点:网页中的所有内容,在文档树中都是节点(如元素节点,属性节点,文本节点,注释节点等)DOM会把所有的节点都看作是对象,这些对象拥有自己的属性和方法。

获取元素

在开发中要操作页面上的某个部分(如控制一个div元素的显示或者隐藏,修改div元素的内容)需要先获取到该部分对应的元素,在对其进行操作。

根据id获取元素

getElementById()方法由document对象提供的用于查找元素的方法。该方法返回的是拥有指定id 的元素(无就返回null,有多个就返回undefined)。

<body> <div id = "box">你好</div> <script> var Obox = document.getElementById('box'); console.log(Obox); /结果是 : <div id = "box">你好</div> console.log(typeof Obox); / Object console.dir(Obox); /结果是:div#box </script> </body>

console.dir()方法用来在控制台中查看对象的属性和方法。

根据标签获取元素

element是指代单个对象,类似一个占位。 根据标签名获取有两种方式:①通过document对象获取元素和通过element对象获取:

document.getElementsByTagName(‘标签名’);element.getElementsByTagName(‘标签名’);这里的element必须是单个元素对象,不能是一个集合。 element是元素对象的统称,通过元素对象可以查找该元素的子元素或后代元素,实现局部查找元素的效果。 document对象是从整个文档中查找元素。 1. 由于相同标签名的元素可能有多个,因此上述方法返回的不是单个元素对象,而是一个集合,且这个集合是一个伪数组。 2. 使用getElementByTagName()方法获取到的集合是动态集合,当页面增加了标签时,这个集合中也会自动增加元素。

根据name获取元素

一般用于获取表单元素,使用document.getElementsByName()方法。name 的值不要求必须是唯一的, 多个元素也可以有同样的名字,如表单中的单选框和复选框。

var fruits = document.getElementsByName('fruits'); fruits[0].checked = true;

返回的也是一个集合对象,可以讲元素中的checked属性值设置为true。

HTML5新增的获取方式

HTML中为document对象新增了getElementsByClassName(),querySlelctor和querySelectorAll()。 在使用时需要考虑到浏览器的兼容性问题。

根据类名获取 document .getElementByClassName()方法,用于通过类名来获取某些元素集合。 <body> <span class = "one">英语</span> <span class = "one">语文</span> <span class = "two">数学</span> <span class = "two">物理</span> <script> var Ospan1 = document.getElementByClassName('one'); var Ospan2 = document.getElementByClassName('two'); Ospan1[0].style.fontWeight = 'bold'; Ospan2[1].style.background = 'red'; </script> </body>

使用上述方法得到的是同class的集合,可以修改集合中单个的元素样式,而不修改整个class。 2. querySelector 和querySelectotAll() querySelector()方法用于返回指定选择器的第一个元素对象。querySelectorAll()方法用于返回指定选择器的所有元素对象集合。

var firstBox=document.querySelector('.box');/获取class为box的第一个div var nav = document.queryselector'#nav'); / 获取id为nav的第一个div var li = document.querySelector('li');/获取众多li中的第一个li元素

上述代码说明,再利用这两个方法获取操作的元素时,直接书写标签名或CSS选择器名称即可。根据类名获取元素时在类名前面加上‘ .’,根据id获取时加上‘#’。


document对象的属性

属性说明document.body返回文档的body元素document.title返回文档的title元素document.documentElement返回文档的html元素document.forms返回文档中所有Form对象的引用document.images返回对文档中所有Image对象的引用

html元素是指整个html文档中的所有元素。


事件基础

事件三要素

事件源:触发事件的元素。事件类型:如click单击事件。事件处理程序:事件触发后要执行的代码。

Te:为按钮绑定单击事件

<body> <button id = 'btn'>单击</button> <script> var btn = document.getElementById('btn'); bt.onclik = function(){ alert('弹出'); } </script> </body>


操作元素

DOM操作可以改变网页内容、结构、样式。


操作元素内容

属性说明element.innerHTML设置或返回元素开始和结束标签之间的HTML,包括HTML标签,同时保留空格和换行element.innerText设置或返回元素的文本内容,在返回的时候会去除HTML标签和多余的空格,换行,在设置的时候会进行特殊字符转义element.textContent设置或返回指定节点的文本内容,同时保留空格和换行 innerHTML在使用时会保持编写的格式以及标签样式;innerText是去掉所有格式以及标签的纯文本内容;textContent属性在去掉标签后会保留文本格式;这些方法用来获取节点的文本内容,但是如果是input组件,就需要通过value来获取文本。


操作元素属性

直接元素 . 属性 = 值 来进行操作。


操作元素样式

操作style属性。对于元素对象的样式,可以直接通过元素对象.style. 样式属性名的方式操作。样式属性名对应CSS样式名,但需要去掉css样式名里的半字线‘_’,并将半字线后面的英文首字母大写。 Te:设置:font-size —》 fontSize。 名称说明background设置或返回元素的背景属性backgroundColor。。。元素的背景色display。。。元素的显示类型fontSize。。。字体的大小height。。。元素的高度left。。。定位元素的左部位置listStyleType。。。列表项标记的类型overFlow。。。如何处理呈现在元素框外面的内容textAlign。。。文本的水平对齐方式textDecoration。。。文本的修饰textIndent文本第一行的缩进tansform向元素应用2D或3D转换

Te:

var ele = documen.querySelector('#box'); ele.style.width = '100px'; ele.style.transform = 'rotate(7deg)';

效果相当于在CSS中添加以下样式:

#box{width:100px;transform:roate(7deg)};
操作className属性 在开发中,如果样式修改较多,可以采取操作类名的方式更改元素样式,语法为: “元素对象.className” ==修改类名后,就会直接修改样式,如果想要保留之前的类名,可以采取多类名选择器, this.className = 'first change '==中间用空格隔开。
最新回复(0)