首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我如何使用这个javascript在8个不同ID的不同模态上工作,而不需要对每个按钮重复相同的代码?

要实现在8个不同ID的不同模态上使用相同的JavaScript代码,可以使用以下方法:

  1. 使用类选择器或属性选择器来选择所有的模态框按钮,而不是使用ID选择器。这样可以将相同的代码应用于多个按钮,而不需要重复编写代码。
  2. 在JavaScript中,使用循环遍历所有的模态框按钮,并为每个按钮添加相同的事件处理程序。可以使用querySelectorAll方法选择所有的按钮,并使用forEach方法遍历它们。
  3. 在事件处理程序中,可以使用this关键字来引用当前被点击的按钮。通过this可以获取按钮的相关信息,如ID、属性等。
  4. 如果需要在事件处理程序中执行特定于每个模态框的操作,可以为每个按钮添加自定义属性,如data-targetdata-modal-id,并在事件处理程序中使用这些属性来识别和操作相应的模态框。

下面是一个示例代码:

HTML部分:

代码语言:txt
复制
<button class="modal-btn" data-target="modal1">打开模态框1</button>
<button class="modal-btn" data-target="modal2">打开模态框2</button>
<!-- 其他模态框按钮... -->

<div id="modal1" class="modal">模态框1内容</div>
<div id="modal2" class="modal">模态框2内容</div>
<!-- 其他模态框... -->

JavaScript部分:

代码语言:txt
复制
// 选择所有的模态框按钮
var modalBtns = document.querySelectorAll('.modal-btn');

// 为每个按钮添加事件处理程序
modalBtns.forEach(function(btn) {
  btn.addEventListener('click', function() {
    // 获取目标模态框的ID
    var targetModalId = this.getAttribute('data-target');
    
    // 根据ID获取目标模态框元素
    var targetModal = document.getElementById(targetModalId);
    
    // 执行特定于每个模态框的操作
    // ...
    
    // 显示目标模态框
    targetModal.style.display = 'block';
  });
});

在上述示例中,通过使用类选择器.modal-btn选择所有的模态框按钮,并使用querySelectorAll方法获取它们。然后,使用forEach方法遍历所有的按钮,并为每个按钮添加点击事件处理程序。在事件处理程序中,使用this关键字引用当前被点击的按钮,并通过getAttribute方法获取data-target属性的值,即目标模态框的ID。最后,根据ID获取目标模态框元素,并执行特定于每个模态框的操作,然后显示目标模态框。

这种方法可以避免重复编写相同的代码,并且可以在多个不同ID的模态框上使用相同的JavaScript代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

对话框、模态框和弹出框看起来很相似,它们有何不同?

作为一名长期合同工,我经常改变工作环境——当我在不同的团队、公司、国家工作时,措辞都会不同。词语的含义会随着时间而改变,整个世界都是这样……这很正常!...操作系统级指南是针对操作系统的,APG 则是用来演示如何使用 ARIA 的 (而不是它是否被很好地支持)。...在 DOM 中最先出现的元素会被绘制在第一位,随后的每个元素都在前一个元素之上,而 DOM 中的最后一个元素则被绘制在最后,位于最上面。...Popovers 也可以不使用 JavaScript 进行打开、关闭和切换:通过在 HTML 中使用 标签并使用 popovertarget 属性指向 popover 的 ID,浏览器可以负责显示...当用户打开它时,这是他们唯一想要看到的东西吗?这是一个棘手的问题,我感觉模态对话框可以工作,非模态对话框也可以工作。

4K00
  • 【Java 进阶篇】深入了解 Bootstrap 插件

    Bootstrap 的主要优势包括: 响应式设计:Bootstrap 可以轻松创建适应不同设备和屏幕尺寸的网页,确保用户在各种设备上都能够良好地浏览网站。...:这是轮播的每个项,用户可以通过轮播控制按钮切换到不同的项。...这个基本的轮播结构包含轮播指示符、轮播内容和轮播控制按钮。用户可以通过点击按钮或滑动手势来浏览不同的项。 自定义轮播 轮播可以根据不同的设计需求进行自定义。...这个基本的模态框结构包含了打开模态框的按钮、模态框的标题、内容和操作按钮。用户可以点击关闭按钮或模态框外部来关闭模态框。 自定义模态框 模态框可以根据不同的设计需求进行自定义。...您可以更改模态框的样式、内容、操作按钮等。以下是一个示例,展示如何自定义模态框: <!

    27730

    设计师应该了解的iOS应用开发基础知识

    此外,代码框架本身也是需要学习的,它们有着各自不同的使用方式,在框架之外还有各种扩展库需要摸索。另外,框架本身的质量和成熟程度也是必须考虑的因素。...图片另外一个最常用的操作莫过于Xcode左上角的“运行(Run)”按钮了。这个操作会将项目代码编译成为应用,并在iOS设备模拟器中运行,以便我们直接查看程序的工作情况,而不必每次都部署到实际设备中。...在我们的案例当中,每个视图都是一个对象,它们有各自的内容与行为特征。所以我们需要创建3个不同的类,以便对每个视图的属性和方法进行定义。这些类所扮演的就是View Controller的角色。...另外你大概也发现了,图中代码编辑区的样式风格与你的有所不同,这是因为我(英文原文作者)使用了“Dusk”主题;你可以在Xcode→Preferences的“Fonts and Colors”更改代码编辑区的主题...要解决这个问题,我们需要使用autorelease命令,它会告诉iOS系统一直保持内存资源的分配状况,直到确认“安全”的时候再进行释放。模态视图的代码绑定现在我们需要将代码绑定到XIB当中的控件上。

    85230

    Jump Start Bootstrap 第4章

    让我展示一个如何使用这些事件的例子。我已经写了下面的JQuery代码片段去监听所有的下拉插件状态,并打印每个事件触发时的状态。 在本节中,我们将使用Bootstrap创建一个警告消息,并查看如何添加解除功能。 这里是”成功”警告消息的代码: 每个警报都应该有一个警戒等级。...按钮 在前面的章节中,我们看到了如何创建各种类型的按钮。这里,我们将看到使用Bootstrap的JavaScript插件如何在不同的状态使用它们,并且让它们切换状态。... 在这代码中,我使用类btn、btn-lg、btn-default创建了一个大的灰色按钮,它正好处于inactive状态,当我们点击它,Bootstrap将在按钮上添加类active。...可以使用任何一个HTML标题标签插入标题:,,,等等。对于相关文本,可以使用标记。 对每张幻灯片重复相同的项目标记。

    28.4K40

    Vue.js 系列教程 5:动画

    我们可以使用 v-if 或者 v-show 来切换组件可见性。也可以使用 slot 放置模态窗的切换按钮。...我使用 enter-active 和 leave-active 类的原因是我可以在其它元素上重用这些过渡属性,而不需要在每个实例上应用同样的 CSS 。...需要注意的另外一点:我在每一个 active 类上都使用了 ease-out 属性。这些属性只适用于透明元素。...但是,如果我们想使背景内容淡出视野,使模态窗居中显示而背景丢失焦点,会发生什么呢? 我们不能使用 组件,因为组件是基于被加载或被卸载的部分工作的,而背景只是围绕在周围。...CSS 的话,我们需要设置大量关键帧(而使用 JS 只需要一行代码),我们会使用 SASS mixin 保持样式的简练 (无需重复设置)。

    2.8K71

    iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

    举个例子,在新建邮件的界面中,用户可以点击该按钮来在邮件中添加收件人,而不需要用键盘输入收件人的名字。...日期时间选择器: 最多可以展示4个独立的滑轮,每一个滑轮表示一个不同的值,比如月份或小时等 在每个滑轮的中央使用深色字体来表示当前选中的值 日期时间选择器的大小与iPhone键盘的大小相同,并且不可更改...API注释 想要了解如何在代码中定义信息按钮,可以参考UIButton. iOS包含了两种信息按钮样式:适用于浅色内容上的深色按钮,以及适用于深色内容上的浅色按钮。...选择器: 是日期时间选择器的通用模式 包括一个或多个滑轮,每个滑轮含有一组值 当前选中的值在中间,以深色标识 不可以自定义大小(选择器的大小与iPhone的键盘相同) 使用选择器可以让用户更容易从一系列不同的值中间进行选择...保证每个分段都容易点击。为了保证每个分段的大小有至少44×44像素,请控制分段的数量。在iPhone上,1个分段控件最多包含5个分段。 尽可能地保持每个分段中的文字长度一致。

    13.2K30

    写给 vue2.0 开发者的 vue3.0 教程

    我也会尽我所能来解释这个特性或变更的基本原理 如何构建 我们将构建一个带有模态窗口功能的简单应用程序。我选择这个是因为它方便地允许我展示一些Vue 3的更改。...}) }); Reason for change 使用对象而不是工厂函数的优点是,首先,它在语法上更简单,其次,你可以在多个根实例之间共享顶层状态,例如: const state = { sharedVal...在我解释代码之前,要清楚我们所做的一切都是重构——组件的功能是相同的。还要注意,模板没有改变,因为复合API只影响我们定义组件功能的方式,而不是我们呈现它的方式。...主要动机是考虑更好的代码组织和组件之间的代码重用(因为mixin本质上是一种反模式) 如果您认为在本例中重构应用程序组件以使用复合API是不必要的,那么您是正确的。...马上,您就会理解这个组件的接口,即它要发送和接收什么。 除了提供自我记录的代码之外,您还可以使用事件声明来验证事件负载,尽管在本例中我找不到这样做的理由。

    2.8K40

    解耦播放器中的播放引擎与用户界面元素

    这些播放器实际上是一个黑箱。 后来,视频播放器变成了 JavaScript 库的形式,可以在 flash 和 HTML5 之间灵活切换。...这使得构建一个灵活开放的网络视频生态系统成为可能,可以避免不同的开发者在构建播放器时进行一些重复性的工作。为此需要对 video API 进行一些标准化和扩展工作。...对于标准化来说,stop 函数只是一个简单的例子,其他大量与流媒体播放相关的操作都需要对其形式和内容进行标准化实现。这样在构建播放器时就不需要重复实现这些函数,或者使用不同的名字来定义相同的操作。...这部分的扩展并不需要对整个系统进行改动,而是需要在 video tag API 中对 UI 模块暴露一些函数以使得 UI 可以通过这些函数与用户的操作进行交互。这部分的扩展工作的复杂度并不算高。...控制器集中了 UI 与 流媒体元素的交互逻辑,这种情况下 UI 开发者也不需要去花费心思考虑如何使用流媒体元素相关的内容,也使得 UI 模块可以方便的实现同时对多个视频流的控制。

    77320

    如何将HTML表格转换成精美的PDF

    像这样的小点缀,对把一份看起来很业余的文件变成一份优雅的文件有很大的帮助。 最近,我探索了几种生成 PDF 的解决方案,并建立了这个Demo 程序来展示结果。所有的代码也可以在Github上找到。...该应用是用基本的 HTML、CSS 和 JavaScript 构建的,但你可以使用你的 UI 框架或选择的库轻松创建相同的输出。 每个导出按钮都使用不同的方法生成 PDF。...在 JavaScript 中 window 对象公开了一个 print 方法,所以我们可以写一个简单的 JavaScript 函数,并将其附加到我们的一个按钮上,就像这样: function downloadPDFWithBrowserPrint...该 PDF 也不包括重复的表列标题或表脚,这与我们在 Safari 的打印功能中看到的问题相同。 虽然 jsPDF 是一个强大的库,但当导出的内容只能容纳在一个页面上时,这个工具似乎效果最好。...我们可以保留我们漂亮的表格样式。表格的列头和表脚在每一页上都是重复的,表格的行数不会被切掉,而且页面四面都有适当大小的边距,每个页面的页眉也是重复的,每个页面底部的页码也是重复的。

    6.9K20

    【Java 进阶篇】深入了解 Bootstrap 组件

    这个基本的模态框结构可以根据需要进行扩展和自定义。您可以更改标题、内容和按钮以适应不同情境。 触发模态框的按钮 要触发模态框,您需要一个触发器,通常是一个按钮。...多个模态框 您可以在同一页面上创建多个不同的模态框,只需为它们分配不同的 id 和目标值即可。这允许您在一个网页中使用多个独立的弹出窗口。...-- 模态框内容 --> 在这个示例中,我们创建了两个不同的模态框,每个模态框都有唯一的 id 和目标值。...以下是一个示例,展示如何使用 JavaScript 动态更新进度条: id="myProgressBar...,我们使用 JavaScript 模拟了一个任务,并使用 setInterval 函数定期更新进度条的宽度。

    22720

    优秀组件设计的关键:自私原则

    迭代2 在验证了产品的用户界面后,决定在添加到购物车的按钮上增加一个图标,这将是有益的。不过,设计人员解释说,不是每个按钮都会包括一个图标。...这可以用几种不同的方法来完成,然而,所有这些方法都需要进行一定程度的重构。 也许一个新的IconButton组件被创建,将所有其他的按钮逻辑和样式重复到两个地方。...因为Button只接受纯文本字符串,没有其他子元素,所以这个组件不再工作。 这个设计如果是第二次迭代的话,会不会导致按钮失效呢?也许不会。那时组件和代码库都还很年轻。...然而,让我们再把它们应用到另一个普遍存在问题的组件--模态。 对于这个例子,我们在三个不同的模态布局中得到了预见性的好处。这将有助于引导我们Modal的方向,同时沿途应用自私设计的每个关键。...注意:完整的标记和样式没有显示出来,以便不影响核心的收获。 EDIT PROFILE MODAL 在Edit Profile模态中,我们使用了每个Modal组件。

    1.8K30

    《JavaScript 模式》读书笔记(8)— DOM和浏览器模式1

    大家好,又见面了,我是你们的朋友全栈君。   在本书的前面章节中,我们主要集中关注于核心JavaScript(ECMAScript),而并没有太多关注在浏览器中使用JavaScript的模式。...这也是头痛的主要原因(JavaScript因此获得一些不好的名声),因为不同的浏览器在DOM方法的实现方面并不一致。...将DOM引用分配给局部变量,并使用这些局部变量。 在可能的情况下使用selector API。 当在HTML容器中重复使用时,缓存重复的次数(参考第二章)。   ...如您所见,这样的做法包含很多重复性工作,因此按照第7章讨论的那样使用正面方法创建自己的事件工具是十分有意义的。   ...然后只需要对之前范例中使用的myHandler()函数做微小修改(需要过滤不感兴趣的点击事件),就可以直接使用。在这种情况下,只需寻找按钮的点击事件,而同一个div元素中其他点击事件都会被忽略。

    91430

    React 项目结构和组件命名规范

    我将会在本文为大家展示我已经使用过一段时间并且效果不错的方式,这些方式没有通过重新造轮子来实现,而是通过将社区中的方案组合和提炼得到。 目录结构 我经常遇到的一个问题是如何组织文件和目录结构。...允许两个具有相同名称的组件:组件的命名在应用程序中具有声明性和惟一性,以避免混淆每个组件的职责。但是,上面的方式破坏了具有相同名称的两个组件,一个是容器,另一个是展示示组件。...举个例子,组件的路径如果是 components/User/List.jsx,那么它就被命名为 UserList。 当文件位于具有相同名称的组件中时,我们不需要重复该名称。...考虑到上面的表单,我们知道它是一个用户表单,但是由于我们已经在 User 目录中 ,所以不需要在组件文件名中重复这个单词。因此,我们只将它命名为Form.jsx。...我最初使用 React 的时候喜欢用完整的名字来命名文件,但是这样会导致相同的部分重复太多次,同时引入时的路径太长。

    6.9K30

    VueJs中如何使用Teleport组件

    而不用特意的把一些DOM结构给分离出去,然而,在同一组件中,触发模态框的按钮和模态框本身在同一组件中 因为他们都与组件的开关状态有相关联,模态框与按钮一起渲染在应用DOM结构很深的地方,会导致模态框的...css布局位置非常难控制 鉴于这样的场景和困难,Vue官方提供了一个Teleport组件,很好的可以解决这个问题,让开发者不需要顾虑DOM结构的问题 01 组件套组件层次结构很深时 比如:现在有两个组件...也就是说,如果 包含了一个组件,那么该组件始终和这个使用了 的组件保持逻辑上的父子关系。传入的 props 和触发的事件也会照常工作。...这也意味着来自父组件的注入也会按预期工作,子组件将在 Vue Devtools 中嵌套在父级组件下面,而不是放在实际内容移动到的地方 位置移动了,提现在结构模板上,但是数据逻辑依旧存在关联的 04 如何禁用...对于此类场景,多个 组件可以将其内容挂载在同一个目标元素上,而顺序就是简单的顺次追加,后挂载的将排在目标元素下更后面的位置上 比如下面这样的用例 <Teleport to=".content

    2.3K20

    分享一篇关于如何使用BootstrapVue的入门指南

    让我们来探索一些基本的BootstrapVue组件,包括按钮、表单和卡片。 Buttons 按钮 BootstrapVue提供了多种按钮组件,可用于创建具有不同样式和功能的不同类型的按钮。...,当点击时,将显示一个带有标题“我的模态框”和文本“你好,世界!”...自定义BootstrapVue组件 自定义BootstrapVue组件可以让您根据特定需求调整组件的外观和行为。现在,让我们使用示例来学习如何自定义两个BootstrapVue组件:按钮和模态框。...,该按钮将显示一个标题为“我的模态框”,文本为“你好,世界!”...这个样式只会应用于这个组件中的按钮,而不会应用于页面上的其他按钮。 结束 在本文中,我们介绍了BootstrapVue的基础知识,包括安装和设置、配置和使用。

    1.1K30

    如何使用 JavaScript 对数值数组进行排序?

    在这种方法中,我们使用两个不同的循环,并将每个元素相互比较以对数组进行排序。此方法将在 O(N^2) 时间和 O(1) 额外空间中工作,其中 N 将是数组的大小。...第一个按钮将输入的值插入或推送到数组中,而第二个按钮将通过比较数组元素的数值对数组元素进行排序。...步骤3 - 在下一步中,我们将定义一个JavaScript函数,并将其作为值分配给上一步中添加的第一个按钮的onclick事件,以在数组中插入元素。...语法以下语法将让您知道如何将 sort() 方法与数组一起使用来对其进行排序 array_name.sort( comparator_function ); 让我们通过在 JavaScript 代码示例中实现它来实际理解它...-算法上一个示例的算法和这个示例的算法几乎相同。

    19810

    接口测试之Postman使用全指南(原来使用 Postman测试API接口如此简单)

    大家好,又见面了,我是你们的朋友全栈君。 为什么要做接口测试? 接口的由来: 连接前后端以及移动端。 因为不同端的工作进度不一样,所以需要对开始出来的接口进行接口测试。...直接使用链接还可以用于共享集合。 创建环境 – 创建多个环境有助于减少测试重复(DEV/QA/STG/UAT/PROD),因为可以为不同的环境使用相同的集合。这是参数化发生的地方,将在后续介绍。...你可以将使用到的变量进行参数化,而不是使用不同的数据创建相同的请求,这样会事半功倍,简洁明了。 这些数据可以来自数据文件或环境变量。参数化有助于避免重复相同的测试,可用于自动化迭代测试。...如何创建Postman Tests Postman Tests在请求中添加JavaScript代码来协助验证结果,如:成功或失败状态、预期结果的比较等等。 通常从pm.test开始。...注意: 有不同种类的测试可以在Postman中创建。尝试探索这个工具,看看哪些测试适合你实际测试。 如何创建测试集合 集合在组织测试套件中扮演着重要的角色。

    2.3K10

    别忘了前端是靠什么起家的

    我解释道:“我们可以使用:focus伪类来实现这个效果。你可以先回去继续你的工作。” 四、审查他另外的代码 我继续审查了这位同事的其他代码,发现他对CSS的理解似乎并不深入。...2、在不改变HTML结构的情况下添加内容 通过使用 ::before 和 ::after 伪元素,开发者可以在元素的内容之前或之后插入新的内容或装饰,而不需要修改HTML代码。...这种选择器的存在和使用有几个关键的原因和优势: 1、精确选择和样式化元素 在复杂的网页设计中,开发者可能需要对具有特定属性或属性值的元素应用样式,而不是仅基于元素类型、类或ID。...当需要基于相同属性的元素应用统一的样式时,只需在CSS中定义一次相应的属性选择器规则,而不是在HTML中为每个元素重复添加类或ID。...*/ } 这个示例展示了如何仅通过CSS和HTML属性来实现一个简单的工具提示功能,无需修改HTML结构或使用JavaScript。

    10410

    Blazor学习之旅 (13) Razor类库的使用

    在上一篇我们学习了Blazor和JavaScript的互操作性,这一篇我们了解下如何创建和使用Razor类库。 什么是Razor类库?...我们都知道,在.NET应用程序中,我们可以通过NuGet来安装各种基础功能的类库来帮我们实现底层的基础功能从而不需要重复造轮子。...在Web前端应用中,同样也涉及一些基础的功能我们希望在各个Blazor应用中复用,而不是在每个Blazor应用中都重复地写一遍。...假设,我们需要封装一个ModalDialog(模态对话框)的Razor类库,这样我们在不同的Blazor应用中只需要引用该类库或通过NuGet安装它,就可以复用ModalDialog功能实现,而不需要单独实现一遍它...,方便我们在不同项目中复用: 标题 “取消”和“确认”按钮,具有可配置的标签和可管理的单击事件 可以通过 ChildContent 参数设置组件的内部内容 可以使用 Show 参数控制对话框的显示状态

    43510
    领券