【JavaScript入门-23】DOM选择器

举报
搞前端的半夏 发表于 2022/05/25 22:55:13 2022/05/25
【摘要】 前言在上一篇文章《【JavaScript入门-22】DOM,window,document以及navigator对象 》我们介绍了document对象,通过它我们可以去操作DOM。本节我们介绍如何使用document选择元素! 选择元素需要在何处加载JavaScript为啥不先介绍选择元素的方法,反正要纠结何处加载JS呢?这个问题其实我们在script标签加载JS一文中,已经简单的介绍过了...

前言

在上一篇文章《【JavaScript入门-22】DOM,window,document以及navigator对象 》我们介绍了document对象,通过它我们可以去操作DOM。本节我们介绍如何使用document选择元素!

选择元素需要在何处加载JavaScript

为啥不先介绍选择元素的方法,反正要纠结何处加载JS呢?这个问题其实我们在script标签加载JS一文中,已经简单的介绍过了可以在哪些地方去引入js文件!这里我们再来复习一下!

我们有下面这样一个页面:

image-20220525213914872

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <p>搞前端的半夏</p>
  </body>
</html>

现在我们想要获取p标签的元素,我们使用document为我们提供的获取方法。

mian.js

const p = document.querySelector('p');
console.log("p元素:", p);

然后我们在head标签中引入。<script src="./main.js"></script>,在浏览器中打开,可以看到输出的结果为null

image-20220525214215510

为什么结果是null呢?这是因为我们的JavaScript在HTML页面创建之前就已经加载完整了,此时页面上就没有元素,怎么可能回找到p呢?

我们知道这个原因,很简单就能找出解决方法:我们在HTML创建完成之后加载JavaScript脚本!

这里就有三种方法:

  • 在script标签上,使用defer或async属性
  • 将script放在结束body之前。
  • 使用事件监听器,监听DOM是否加载完成,加载完成之后,执行Javascript

*建议使用第二种方法!

下面我们针对这三种方法演示;

defer或async

请注意:使用defer或async,你也可以把script标签放在body结束之前

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <script src="./main.js" defer></script>
  </head>
  <body>
    <p>搞前端的半夏</p>
  </body>
</html>

放在body结束之前

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <p>搞前端的半夏</p>
    <script src="./main.js" ></script>
  </body>
</html>

image-20220525215451039

监听DOM加载完成

修改main.js方法。通过事件监听,无论你的script放在哪里都可以!

function init() {
 const p = document.querySelector('p');
 console.log("p元素:", p);
}
document.addEventListener('DOMContentLoaded', init);

image-20220525215451039

选择DOM元素

操作DOM的前提,就要求我们先选中元素。

JavaScript中,提供了很多选择元素的方法。

通过名称我们就可以大概猜到这几个方法的作用。

  • 通过ID选择器获取元素
  • 通过class选择器获取元素
  • 通过name属性获取 这个方法在表单组件中常用。例如获取input<input type="hidden" name="up" />
  • 通过标签名获取元素
  • 通过选择器(id/class选择器/标签名等等等,这里可以是任意的CSS选择器)获取元素

getElementById

<p id="testID">搞前端的半夏</p>
const p=document.getElementById('testID');
console.log("p-testID元素:", p);

这里有一个很重要的细节:如果元素有ID属性,那么你可以直接使用ID的值得到元素。例如上面的testID

console.log(testID)

image-20220525223215133

getElementsByClassName

<p class="testClass">搞前端的半夏</p>
const p=document.getElementsByClassName('testClass');
console.log("p-testClass元素:", p);

请注意,这里的element是复数,我们得到的结果也是一个数据,类型是HTMLCollection!

image-20220525223035388

getElementsByName

    <input name="inputName" />

image-20220525223614783

getElementsByTagName

<p>搞前端的半夏</p>
const p=document.getElementsByTagName('p');
console.log("p:", p);

image-20220525223728718

querySelector和querySelectorAll

这两个方法接受同样的参数,就是CSS选择器!

例如上面的const p = document.querySelector("p");就相当于CSS里面的

p{
//样式
}

如果想使用id选择器,就需要加上#。想使用class选择器,就必须加上**.**

const p =document.querySelector('#testID')
const p =document.querySelector('.testClass')
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。