首页 > 编程笔记 > JavaScript笔记 阅读:21

JavaScript获取元素的多个方法(附带实例)

JavaScript 对 HTML 页面中的元素进行访问,首先需要获取元素。

CSS 使用 id 选择器、类选择器、后代选择器等选择器获取页面元素,JavaScript 则通过 document 对象和 element 对象提供的方法和属性获取元素,如下表所示。

表:JavaScript获取元素的方法和属性
方法名/属性名 描述
getElementById() 返回对拥有指定 id 的第一个对象的引用
getElementsByName() 返回带有指定名称的对象集合
getElementsByClassName() 返回所有指定类名的元素集合
getElementsByTagName() 返回带有指定标签名的对象集合
querySelector() 返回匹配指定 CSS 选择器的第一个元素
querySelectorAll() 返回匹配指定 CSS 选择器的所有元素
documentElement 获取 html 根元素
title 获取文档标题
body 获取 body 元素

1) getElementById() 方法返回对拥有指定 id 的第一个对象的引用。语法格式如下:
document.getElementById(id)

【实例】getElementById() 获取元素。
<div id="time">2022-3-18</div>
<script>
    var timer = document.getElementById('time');
    console.log(timer);
    console.log(typeof timer);
    var timer2 = document.getElementById('time2');
    console.log(timer2);
</script>
在实例程序中:
实例在 Chrome 浏览器控制台中的运行结果如下图所示:


2) getElementsByName() 方法返回带有指定名称的对象集合。语法格式如下:
document.getElementsByName(name)

【实例】getElementsByName() 获取元素。
<input name="myInput" type="text" value="1"/>
<input name="myInput" type="text" value="2" />
<input name="myInput" type="text" value="3" />

<script>
    var myInputs = document.getElementsByName('myInput');
    console.log(myInputs);
    console.log(myInputs[0]);
    console.log(myInputs.length);
</script>

实例在 Chrome 浏览器控制台中的运行结果如下图所示:


提示,getElementsByName() 返回的是一个集合,即使页面中只有一个被选中的元素,也需要使用下标表达式“[0]”访问这个元素。

3) getElementsByClassName() 方法返回所有指定类名的元素集合。语法格式如下:
document | element.getElementsByClassName(classname)

【实例】getElementsByClassName() 获取元素。
<div id="oDiv">
    <input class="myInput" type="text" value="1" />
    <input class="myInput" type="text" value="2" />
    <input class="myInput" type="text" value="3" />
</div>
<script>
    var oDiv = document.getElementById('oDiv');
    var myInputs = document.getElementsByClassName('myInput');
    var myInputs2 = oDiv.getElementsByClassName('myInput');
    console.log(myInputs.length); // 输出: 3
    console.log(myInputs2.length); // 输出: 3
</script>

4) getElementsByTagName() 方法返回带有指定标签名的对象的集合。语法格式如下:
document | element.getElementsByTagName(tagname)

【实例】getElementsByTagName() 获取元素。
<ul>
    <li></li>
    <li></li>
</ul>
<ol id="ol">
    <li></li>
    <li></li>
</ol>
<script>
    var lis = document.getElementsByTagName('li');
    console.log(lis.length); // 输出: 4
    var ol = document.getElementById('ol');
    var lis2 = ol.getElementsByTagName('li');
    console.log(lis2.length); // 输出: 2
</script>
程序中,document.getElementsByTagName('li') 返回所有的 li 元素,ol.getElementsByTagName('li') 只返回 ol 元素中的 li 元素,不包含 ul 中的 li 元素。

提示,getElementsByClassName() 是通过 class 的值获取元素,getElementsByTagName() 是通过 tagname 的值获取元素。它们均可以通过 document 或 element 调用,返回获取的元素集合。使用 element 调用时获取的元素范围更精准,和 CSS 的后代选择器获取元素类似。

5) querySelector() 方法返回匹配指定 CSS 选择器的第一个元素,querySelectorAll() 方法返回匹配指定 CSS 选择器的所有元素。语法格式如下:
document | element. querySelector | querySelectorAll(CSS selectors)

【实例】querySelector()和querySelectorAll()获取元素。
<div class="box">盒子 1</div>
<div class="box">盒子 2</div>
<div id="nav">
    <ul>
        <li>首页</li>
        <li>产品</li>
    </ul>
</div>
<script>
    var firstBox = document.querySelector('.box');
    console.log(firstBox);
    var nav = document.querySelector('#nav');
    console.log(nav);
    var li = document.querySelector('li');
    console.log(li);
    var allBox = document.querySelectorAll('.box');
    console.log(allBox);
    var lis = document.querySelectorAll('li');
    console.log(lis);
</script>

程序在 Chrome 浏览器控制台中的运行结果如下图所示:


6) document 属性获取元素。例如:
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>
    <script>
        console.log(document.doctype); // 获取文档类型
        console.log(document.documentElement); // 获取 html 根元素
        console.log(document.title); // 获取文档标题
        console.log(document.body); // 获取 body 元素
    </script>
</body>
</html>
程序通过 document 属性获取元素。其中,document.doctype 获取文档类型、document.documentElement 获取 html 根元素、document.title 获取文档标题、document.body 获取 body 元素。

程序在 Chrome 浏览器控制台中的运行结果如下图所示:

相关文章