Web APIs】DOM 文档对象模型 ② ( 根据标签名获取 DOM 元素 - getElementsByTagName 函数 | 获取指定标签下的 DOM 元素 )

            <div id="content_views" class="markdown_views prism-tomorrow-night-eighties">
                <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                    <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                </svg>
                <p></p> 


本博客相关参考文档 :





一、获取 DOM 元素




1、根据标签名获取 DOM 元素 - getElementsByTagName 函数


调用 Document.getElementsByTagName 函数Element.getElementsByTagName 函数 , 可以获取 指定标签名称 的 若干 Element 对象集合 ;

  • 调用 Document 的函数 , 获取的是 整个文档的 指定标签名称 的元素 ;
  • 调用 Element 的函数 , 获取的是 Element 容器下的 指定标签名称 的元素 ;

getElementsByTagName 函数语法如下 :

var elements = document.getElementsByTagName(name);

 
 
  • 1
  • name 参数 : 标签名字符串 , 如 : 要获取 <div> 标签 , 传入 "div" 参数 ;
  • elements 返回值 : 返回的结果是 封装有若干 Element 对象的 HTMLCollection 对象 ;
    • 该对象中的 DOM 元素顺序是按照 DOM 树的 DOM 元素 发现顺序 进行排列的 ;
    • HTMLCollection 对象是一个 " 伪数组 " , 有数组长度 , 也可以使用索引下标访问 , 但是没有数组的 push、pop 等数组函数 ;

代码示例 :

        // 注意 : HTML 文档加载顺序是从上到下加载 
        // 这里要先加载标签 , 然后加载 JavaScript 脚本
        var elements = document.getElementsByTagName("div");
    <span class="token comment">// 控制台打印获取结果</span>
    console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>elements<span class="token punctuation">)</span><span class="token punctuation">;</span>

参考文档 :


完整代码示例 :

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset=UTF-8>
<!-- 设置 meta 视口标签 -->
<meta name=viewport content=width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0>
<meta http-equiv=X-UA-Compatible content=ie=edge>
<title>JavaScript</title>
<style></style>

</head>

<body>
<div>Hello</div>
<div>Hello</div>
<div>Hello</div>
<script>
// 注意 : HTML 文档加载顺序是从上到下加载
// 这里要先加载标签 , 然后加载 JavaScript 脚本
var elements = document.getElementsByTagName(“div”);

    <span class="token comment">// 控制台打印获取结果</span>
    console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>elements<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>

</body>

</html>

执行结果 : 调用 document.getElementsByTagName 函数获取 网页中的 3 哥 div 元素 , 打印结果如下 :

在这里插入图片描述


2、HTMLCollection 遍历及使用


在上面的章节 , 通过 调用 Document 或 Element 的 getElementsByTagName 函数 , 可以获取到 封装了多个 Element DOM 元素的 HTMLCollection 对象 ;

HTMLCollection 对象是 时刻 动态改变的 , 如果 HTML 文档结构发生了改变 , HTMLCollection 对象会进行自动更新 , 如果要操作 HTMLCollection 对象 , 建议先创建副本 , 然后再进行操作 ;

HTMLCollection 是个伪数组对象 , 可以 使用 数组下标的方式获取其中的 Element 元素 , 可以通过该 Element 元素修改标签内容 ;

        var elements = document.getElementsByTagName("div");
    <span class="token comment">// 遍历 HTMLCollection 中封装的 DOM 元素</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> elements<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
        <span class="token comment">// 打印 DOM 元素</span>
        console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>elements<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token comment">// 改变 DOM 元素</span>
        elements<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> <span class="token string">"你好"</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

HTMLCollection 文档 : https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCollection


完整代码示例 :

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset=UTF-8>
<!-- 设置 meta 视口标签 -->
<meta name=viewport content=width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0>
<meta http-equiv=X-UA-Compatible content=ie=edge>
<title>JavaScript</title>
<style></style>

</head>

<body>
<div>Hello</div>
<div>Hello</div>
<div>Hello</div>
<script>
// 注意 : HTML 文档加载顺序是从上到下加载
// 这里要先加载标签 , 然后加载 JavaScript 脚本
var elements = document.getElementsByTagName(“div”);
// 控制台打印获取结果
console.log(elements);

    <span class="token comment">// 遍历 HTMLCollection 中封装的 DOM 元素</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> elements<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
        <span class="token comment">// 打印 DOM 元素</span>
        console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>elements<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token comment">// 改变 DOM 元素</span>
        elements<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> <span class="token string">"你好"</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>

</body>

</html>

执行结果 :

在这里插入图片描述


3、获取指定标签下的 DOM 元素 - getElementsByTagName 函数


上面的示例中都是获取 Document 文档下面的所有 标签名称 对应的 Element 元素 , 如果指向获取某一个指定标签下的 DOM 元素 , 则需要如下步骤 :

  • 首先 , 通过 调用 document.getElementById 函数 , 获取指定标签对应的 Element 元素 ;
  • 然后 , 通过 调用 element.getElementsByTagName 函数 , 获取 Element 元素下的所有 指定类型的标签 ;

代码示例 :

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset=UTF-8>
<!-- 设置 meta 视口标签 -->
<meta name=viewport content=width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0>
<meta http-equiv=X-UA-Compatible content=ie=edge>
<title>JavaScript</title>
<style></style>

</head>

<body>
<div>Hello</div>
<div>Hello</div>
<div>Hello</div>

<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>nav<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">&gt;</span></span>Hello2<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">&gt;</span></span>Hello2<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">&gt;</span></span>Hello2<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>

<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script"><span class="token language-javascript">
    <span class="token comment">// 注意 : HTML 文档加载顺序是从上到下加载 </span>
    <span class="token comment">// 这里要先加载标签 , 然后加载 JavaScript 脚本</span>

    <span class="token comment">// 只获取 nav 下的 div</span>
    <span class="token comment">// 先通过 id 获取 Element</span>
    <span class="token keyword">var</span> element <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'nav'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">// 获取 nav 下的 div , 其它的 div 不获取 ★</span>
    elements <span class="token operator">=</span> element<span class="token punctuation">.</span><span class="token function">getElementsByTagName</span><span class="token punctuation">(</span><span class="token string">"div"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">// 控制台打印获取结果</span>
    console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>elements<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">// 遍历 HTMLCollection 中封装的 DOM 元素</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> elements<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
        <span class="token comment">// 打印 DOM 元素</span>
        console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>elements<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token comment">// 改变 DOM 元素</span>
        elements<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> <span class="token string">"你好"</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>

</body>

</html>

执行结果 :
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值