JavaScript进阶之DOM


什么是DOM?

DOM(Document Object Model)文档对象模型,是浏览器提供的一套专门用来操作网页内容的功能,用于开发网页内容特效和实现用户交互。

  • DOM树

将HTML文档以树状结构直观的表现出来,直观体现标签与标签之间的关系
在这里插入图片描述

  • DOM对象

浏览器根据html标签生成的JS对象:
1.所有的标签属性都可以在这个对象上面找到
2.修改这个对象的属性会自动映射到标签身上
DOM的核心思想:将网页内容当做对象来处理

document对象:
DOM中最外层的对象
例如document.write()
网页所有内容都在document里面

获取DOM对象

根据CSS选择器获取

  • 选择匹配的第一个元素
//document.querySelector('css选择器')
const div = document.querySelector('div')	//获取第一个div标签对象

参数:包含一个或多个有效的CSS选择器字符串
返回值:CSS选择器匹配的第一个元素,一个HTMLElement对象

  • 选择匹配的多个元素
//document.querySelectorAll('css选择器')
const divArr = document.querySelectorAll('div')	//获取所有div标签对象

参数:包含一个或多个有效的CSS选择器字符串
返回值:CSS选择器匹配的NodeList对象集合
得到的是一个伪数组:有长度有索引号的数组;没有pop() push()等数组方法;想要得到里面的每一个对象,则需要遍历(for)的方式获得

其他获取DOM元素方法

  • 根据id获取一个元素
document.getElementById('nav')
  • 根据标签获取一类元素
document.getElementsByTagName('div')
  • 根据类名获取元素
document.getElementsByClassName('w')

操作元素内容

  • 元素innerText属性

将文本内容添加/更新到任意标签位置
显示纯文本,不解析标签

<div class="box">我是文字的内容</div>
<script>
    // 1.获取元素
    const box = document.querySelector('.box')
    // 2.修改文字内容  对象.innerText 属性
    console.log(box.innerText)  // 获取文字内容
    box.innerText = '我是一个盒子'  // 修改文字内容
    box.innerText = '<strong>我是一个盒子</strong>'  // 不解析标签
</script>
  • 元素innerHTML属性

将文本内容添加/更新到任意标签位置
会解析标签,多标签建议使用模板字符

<div class="box">我是文字的内容</div>
<script>
    // 1.获取元素
    const box = document.querySelector('.box')
    // 2.innerHTML 解析标签
    console.log(box.innerHTML)
    box.innerHTML = '<strong>我要更换</strong>'
</script>

操作元素属性

  • 操作元素常用属性

语法:对象.属性 = 值

<img src="./images/1.jpg" alt="">
<script>
    // 1.获取图片元素
    const img = document.querySelector('img')
    // 2.修改图片对象属性   对象.属性 = 值
    img.src = './images/2.jpg'
    img.title = 'ROG'
</script>
  • 操作元素样式属性

1.通过style属性操作CSS
修改样式比较少的情况下有优势
生成的是行内样式表,权重比较高
语法:
对象.style.样式属性 = 值

<div class="box"></div>
<script>
    // 1.获取元素
    const box = document.querySelector('.box')
    // 2.修改样式属性   对象.style.样式属性 = '值'  别忘了跟单位
    box.style.width = '300px'
    // 多组单词的,采用 小驼峰命名法
    box.style.backgroundColor = 'hotpink'
</script>

2.通过类名(className)操作CSS
如果修改的样式较多,通过style属性修改比较繁琐,此时可借助于CSS类名的形式
className是使用新值换旧值,如果需要添加一个类,需要保留之前的类名:元素.className = ‘active1 active2’
语法:
元素.className = ‘active’ //active是一个CSS类名

<div class="nav">123</div>
<script>
    // 1.获取元素
    const div = document.querySelector('div')
    // 2.添加类名  box ,保留之前的类名 nav
    div.className = 'nav box'
</script>

3.通过classList操作CSS(重点掌握
为了解决className容易覆盖以前的类名,可以通过classList方式追加和删除类名
语法:
追加一个类——元素.classList.add(‘类名’)
删除一个类——元素.classList.remove(‘类名’)
切换一个类——元素.classList.toggle(‘类名’)

<div class="box">文字</div>
<script>
    // 通过classList添加
    // 1.获取元素
    const box = document.querySelector('.box')
    // 2.修改样式
    box.classList.add('active')		//追加类
    box.classList.remove('box')		//删除类
    box.classList.toggle('active')	//切换类,有就删掉,没有就加上
</script>
  • 操作表单元素属性

获取:DOM对象.属性名
设置:DOM对象.属性名 = 新值

<input type="checkbox" name="" id="">
<script>
    // 1.获取
    const ipt = document.querySelector('input')
    // 2.设置
    ipt.checked = true
    // ipt.checked = 'true'  // 会选择,但不提倡,有隐式转换
</script>
  • 自定义属性

标准属性:
标签天生自带的属性,比如class id title等,可以直接使用点语法操作,比如:disabled、checked、selected

自定义属性:
在html5中推出来专门的data-自定义属性
在标签上一律以data-开头
在DOM对象上一律以dataset对象方式获取

<div data-id="1" data-spm="不知道">1</div>
<div data-id="2">2</div>
<div data-id="3">3</div>
<div data-id="4">4</div>
<div data-id="5">5</div>
<script>
    const one = document.querySelector('div')
    console.log(one.dataset.id)		//输出 1
    console.log(one.dataset.spm)	//输出 不知道
</script>

总结

以上就是今天要讲的内容,主要介绍DOM对象的获取使用,在JavaScript中,DOM是至关重要的一部分,一定要多学多练。

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值