Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Web APIs】JavaScript 操作多个元素 ① ( 多选一互斥按钮案例 | getElementsByTagName 方法获取 HTMLCollection 伪数组对象 )

【Web APIs】JavaScript 操作多个元素 ① ( 多选一互斥按钮案例 | getElementsByTagName 方法获取 HTMLCollection 伪数组对象 )

作者头像
韩曙亮
发布于 2024-08-09 01:27:31
发布于 2024-08-09 01:27:31
15700
代码可运行
举报
运行总次数:0
代码可运行
之前的 JavaScript 中使用 DOM 操作元素 , 都是 操作 单个元素 , 从本篇博客开始进行多元素的操作 ;

一、多元素操作案例


1、案例需求 - 多选一互斥按钮案例

实现如下效果 , 页面中有多个按钮 , 点击一个按钮 , 本按钮高亮显示 , 将其它按钮重置 ;

2、案例核心要点 - getElementsByTagName 方法获取多个元素

通过调用 Document 对象 或 Element 对象的 getElementsByTagName 方法 , 可以得到一个 HTMLCollection 对象 , 这是一个 伪数组 , 可通过数组下标获取 DOM 对象 ;

getElementsByTagName 函数原型如下 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
HTMLCollection getElementsByTagName(String tagName);
  • tagName 参数 : 元素的标签名称 , 表示要查找的元素的标签名 , 该参数是不区分大小写 ;
  • 返回一个 HTMLCollection 对象 , 这是一个动态更新的集合 , 包含了所有匹配的元素 , HTMLCollection 类似于数组 , 但它并不是一个真正的数组 , 无法使用数组的许多方法 , 可以使用数组下标访问 Element 元素 ;

HTMLCollection 是 实时集合 , 也就是 如果该方法被调用后 , 文档结构发生了改变 , 那么 HTMLCollection 集合中的元素 , 也要跟着更新 ;

调用 document.getElementsByTagName('button') 代码 , 可以获取 文档中所有的 button 标签 ,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        // I. 获取所有 button 标签元素
        // getElementsByTagName 函数 的 返回值是 NodeList 对象 , 
        var buttons = document.getElementsByTagName('button');

通过 buttons[i] 可以获取指定的 第 i 个 元素 ;

3、案例核心要点 - 实现策略

总共三个 <button> 按钮 , 通过 document.getElementsByTagName('button') 可以获取这三个按钮 ;

互斥按钮效果 , 按下任意一个按钮之后 , 把三个按钮都设置为默认的状态 , 然后再将本次点击的按钮设置为高亮状态 ;

在循环中 , 设置该效果 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        // II. 为每个 按钮 设置点击事件 , 每个点击事件都是设置所有按钮为默认背景 , 本按钮高亮显示
        // buttons 是 NodeList 对象 , 该对象是 伪数组 
        // 可使用数组下标获取每个 按钮元素
        for (var i = 0; i < buttons.length; i++) {
            buttons[i].onclick = function() {
                // 1. 设置所有按钮的背景为默认背景
                for (var i = 0; i < buttons.length; i++) {
                    // 设置默认背景
                    buttons[i].style.backgroundColor = '';
                }
                // 2. 设置本按钮的背景为高亮显示
                this.style.backgroundColor = 'green';
            }
        }

4、完整代码示例

代码示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Inline Style Operation Example</title>
    <style>
        * {
            /* 取消默认内外边距样式 */
            margin: 0;
            padding: 0;
        }
        
        div {
            /* 设置宽度即可 , 高度使用内部的 子元素自动填充 */
            width: 300px;
            margin: 100px auto;
        }
        
        button {
            /* 设置按钮样式 , 左浮动从左到右头放置 */
            float: left;
            width: 80px;
            height: 50px;
            margin: 10px;
        }
    </style>
</head>

<body>
    <div>
        <button>按钮1</button>
        <button>按钮2</button>
        <button>按钮3</button>
    </div>

    <script>
        // I. 获取所有 button 标签元素
        // getElementsByTagName 函数 的 返回值是 NodeList 对象 , 
        var buttons = document.getElementsByTagName('button');

        // II. 为每个 按钮 设置点击事件 , 每个点击事件都是设置所有按钮为默认背景 , 本按钮高亮显示
        // buttons 是 NodeList 对象 , 该对象是 伪数组 
        // 可使用数组下标获取每个 按钮元素
        for (var i = 0; i < buttons.length; i++) {
            buttons[i].onclick = function() {
                // 1. 设置所有按钮的背景为默认背景
                for (var i = 0; i < buttons.length; i++) {
                    // 设置默认背景
                    buttons[i].style.backgroundColor = '';
                }
                // 2. 设置本按钮的背景为高亮显示
                this.style.backgroundColor = 'green';
            }
        }
    </script>
</body>

</html>

运行效果 :

进入后 , 默认状态如下 :

点击按钮 1 , 按钮 1 高亮 ;

点击 按钮 3 , 按钮 1 高亮取消 , 按钮 3 高亮 ;

完整的动态效果如下 :

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Web APIs】DOM 文档对象模型 ④ ( querySelector 函数 | querySelectorAll 函数 | NodeList 对象 )
在之前的博客中 , 都是通过 ID、 标签名、类名 获取 HTML 网页中的 DOM 元素 , 分别使用
韩曙亮
2024/06/24
2150
【Web APIs】DOM 文档对象模型 ④ ( querySelector 函数 | querySelectorAll 函数 | NodeList 对象 )
【JavaScript】JavaScript开篇基础(4)
常用的事件: 鼠标事件: onclick(鼠标点击) onmouseover(鼠标经过), onmouseout(鼠标离开), onfocus(获得鼠标焦点), onblur(失去鼠标焦点), onmousemove(鼠标移动触发), onmouseup(鼠标弹起触发), onmousedown(鼠标按下触发) 事件的组成: 事件源:事件触发的对象,如 按钮 事件类型:如何触发,什么事件,如 鼠标点击(onclick) 事件处理程序: 通过一个函数赋值的方式完成
E绵绵
2024/11/05
1140
【JavaScript】JavaScript开篇基础(4)
JavaScript 实现 Tab 点击切换
Tab 选项卡切换效果在现如今的网页中,运用的也是比较多的,包括点击切换、滑动切换、延迟切换、自动切换等多种效果,在这篇博文里,我们是通过原生 JavaScript 来实现 Tab 点击切换的效果
Nian糕
2018/08/21
4.3K0
JavaScript 实现 Tab 点击切换
JavaScript HTML DOM 集合(Collection)
getElementsByTagName() 方法返回 HTMLCollection 对象。
陈不成i
2021/07/20
5350
排他操作
① 用到新的鼠标事件 鼠标经过 onmouseover 鼠标离开 onmouseout
梨涡浅笑
2020/10/27
1.3K0
排他操作
前端学习(48)~通过style对象获取和设置行内样式
需要注意的是:style是一个对象,只能获取行内样式,不能获取内嵌的样式和外链的样式。例如:
Vincent-yuan
2020/03/19
1.4K0
从零开始学 Web 之 DOM(二)对样式的操作,获取元素的方式
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧! 1、对样式的操作 1.1、点击按钮设置 div 的宽高和背景颜色 <body> <input type="button" value="显示颜色" id="btn"> <div id="dv"></div> <scri
Daotin
2018/08/31
2.1K0
前端架构师之10_JavaScript_DOM
第1级DOM(DOM Level 1,或DOM1)。为XML和HTML文档中的元素、节点、属性等提供了必备的属性和方法。结合了Netscape及微软公司开发的DHTML(动态HTML)思想。
张哥编程
2024/12/13
1470
JavaScript web编程
三个非常基础的案例,适用于初学者写网页的运用,通过自己的创造和灵感能够写出许多有意思的网页效果,js可以给网页更多的动态效果,使网站更加的灵活。
用户8247415
2021/04/19
3990
排他思想及部分案例
1.1 排他思想 如果有同一组元素,我们想要某一个元素实现某种样式, 需要用到循环的排他思想算法: 所有元素全部清除样式(干掉其他人) 给当前元素设置样式 (留下我自己) 注意顺序不能颠
星辰_大海
2020/09/30
1.1K0
【Web APIs】DOM 文档对象模型 ② ( 根据标签名获取 DOM 元素 - getElementsByTagName 函数 | 获取指定标签下的 DOM 元素 )
调用 Document.getElementsByTagName 函数 或 Element.getElementsByTagName 函数 , 可以获取 指定标签名称 的 若干 Element 对象集合 ;
韩曙亮
2024/06/19
1760
【Web APIs】DOM 文档对象模型 ② ( 根据标签名获取 DOM 元素 - getElementsByTagName 函数 | 获取指定标签下的 DOM 元素 )
慕课网javascript 进阶篇 第九章 编程练习
把平常撸的码来博客上再撸一遍既可以加深理解,又可以理清思维。还是很纯很纯的小白,各位看官老爷们,不要嫌弃。最近都是晚睡,昨晚也不例外,两点多睡的。故,八点起来的人不是很舒服,脑袋有点晕呼呼,鉴于昨晚看到了这章的编程练习,想着自己DOM编程艺术也差不多看完了,高级3也看了点,所打算开始多敲代码了。 谁知,看着编辑器一脸懵逼,不知道如何啃下这块骨头,米思绪,写着也没什么感觉,索性就不写了,这不下午才来撸它。 要求如下: <!DOCTYPE html> <html> <head> <title>
大当家
2018/06/28
7740
JS-DOM 综合练习-动态添加删除班级成绩表
费了2个小时,才把原理弄懂,把问题逐个解决,当你发现你最后栽的那个点,是一个小石头拌的你,你起来是该哭还是该笑呢?只怪自己习武不精吧。 虽然问题都解决了,但是还有一个余留的问题就是鼠标经过input时,怎么修改背景颜色的问题。 这一节有点乱,虽然整理的代码编了问题序号。可我相信,再过几天自己回头看肯定还是一头雾水。 so,附上具体问题网址:http://www.imooc.com/code/1636 以下是html整件 <!DOCTYPE html> <html> <head> <meta chars
xing.org1^
2018/05/17
3.8K0
【javaScript案例】之抽奖器效果的实现
其实很简单,首先用html和css做出整体的框架,然后用js在中间按钮的onclick函数中设置定时器+随机改变某一盒子的背景颜色就可以了。 下面我们来讨论一下细节的方面:
xinxin-l
2022/03/29
1.5K0
【javaScript案例】之抽奖器效果的实现
前端基础-节点操作
document.createElement() 用来生成网页元素节点,参数为元素的标签名;
cwl_java
2020/03/26
4.3K0
javascript基础练习:借用原型对象实现继承 & 排他思想 & 页面带参数自动跳转
定义两个构造函数Student和Person,利用原型对象模拟上面类的继承关系。就是用对象模拟类,然后用call方法在函数内调用父类的方法即可。 注意call的返回值是调用者提供的 this 值和参数调用该函数的返回值。若该方法没有返回值,则返回 undefined。
Enterprise_
2020/07/10
4280
JS-事件之鼠标、键盘都能控制的下拉选框效果
<script type="text/javascript"> window.onload=function(e){ var box=document.getElementById('divselect'), title=box.getElementsByTagName('cite')[0], menu=box.getElementsByTagName('ul')[0], as=box.getElementsByTagName('a'),//as是一个
xing.org1^
2018/05/17
3.3K0
「Web编程API」- 02
请注意,本文编写于 2094 天前,最后修改于 174 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
4980
「Web编程API」- 02
Javascript DOM(一)
预解析:js 引擎会把 js 里面所有的 var 和 function 提升到当前作用域的最前面
赤蓝紫
2023/01/01
1.2K0
Javascript DOM(一)
JavaScript离别之作——HTML元素操作
document对象提供了一些用于查找元素的方法,利用这些方法可以根据元素的id、name和class属性以及标签名称的方式获取操作的元素。
全栈程序员站长
2022/09/09
1.1K0
JavaScript离别之作——HTML元素操作
推荐阅读
相关推荐
【Web APIs】DOM 文档对象模型 ④ ( querySelector 函数 | querySelectorAll 函数 | NodeList 对象 )
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验