DOM对象的深入理解

DOM是啥?

JS由三部分组成:

  • ECMAScript
  • DOM(Document Object Model): 文档对象模型,简单来说,就是提供一系列的属性和方法,让我们能够操作页面中的DOM元素(可以理解为HTML标签)。
  • BOM(Browser Object Model): 浏览器对象模型

如何获取DOM元素?

这里先简单列举两个,用以探究DOM内部结构。

语法含义
document.getElementById(“newsItem”)通过元素的id获取一个元素对象
父元素.getElementsByTagName(“li”)通过元素的标签名获取一组元素对象

得到的结果分别是什么呢?

通过id获取一个元素对象

通过console.log()输出的信息:
在这里插入图片描述
通过console.dir()输出的详细信息:(太长只截图了前面的一部分)

哈哈哈好了,这两张图都不重要,重要的是,获取到的内容包含许多键值对! 说明——基于JS获取到的DOM元素本质上是一个对象!这些键值对就是DOM对象中自带的属性和方法。该对象保存在堆内存中。

值得一提的是,在这些键值对中,有许多属性的值——同样也是一个对象,比如style(敲黑板了!等会儿要用到!)
在这里插入图片描述
用堆栈内存图表示就是下面酱紫的:
在这里插入图片描述

注意:操作DOM对象与操作普通对象的方法一样。可以读取或设置对象中的属性和方法。在操作DOM对象的style属性时,影响的是元素的行内样式,也就是在元素标签上设置的样式,通过其他方式设置的样式均不会被这种方式读取和改写。

思考题:以下三种方式哪些可以将box元素背景颜色修改为红色?

box.style.backgroudColor = "red"                    √
let boxSty = box.style;
boxSty.backgroundColor = "red";                     √
let value = box.style.backgroundColor ;
value = "red";                                      ×

① 第一种修改方式首先通过栈内存中box对应的地址找到DOM元素对象,然后通过style属性值(地址)找到style对应的对象,最后找到样式对象中的backgroundColor属性,并将其值修改为红色。

② 第二种修改方式,将style属性对应的对象赋值给一个变量boxSty,然后通过该变量访问style对象中的backgroundColor属性,并将其值修改为红色。

③ 第三种修改方式,将DOM对象中——style属性所对应的对象中——的backgroundColor属性值赋值给了value变量,该value变量保存在栈内存中,修改时也是直接修改栈内存中value变量保存的值,并不会修改堆内存中backgroundColor属性对应的值。

通过标签名获取一组元素对象

首先还是通过输出的方式get一下结果是什么东东:
在这里插入图片描述
我们仿佛看到了一个数组~

没错,通过标签名获取一组对象的结果,就是得到一个类数组对象,它具有像数组一样的属性名(数字索引)和length属性,我们可以像操作数组一样操作它。每一个类数组元素都是一个具有内置属性和方法的对象。

注意:通过getElementsByTagName获取到的是一组对象,哪怕只有一个对象或没有,返回的也是一个类数组。

应用

通过JS实现列表的隔行变色

let itemList = newsItem.getElementsByTagName("li");     // 根据标签名获取一组对象
for(var i = 0; i < itemList.length; i++){         // 遍历这个类数组
	var itemLi = itemList[i];        // 当前对象
	if(i % 2){
		itemLi .style.color = "red";       // i为偶数,因此是奇数行,设置为红色
	}else{
		itemLi .style.color = "green";   // i为奇数,因此是偶数行,设置为绿色
	}
}

ps:神奇的配色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值