首页
学习
活动
专区
工具
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,浏览器可以负责显示...当用户打开它时,这是他们唯一想要看到东西吗?这是一个棘手问题,感觉模态对话框可以工作,非模态对话框也可以工作

3.4K00

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

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

20830

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

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

81630

Jump Start Bootstrap 第4章

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

28.3K40

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

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

13.2K30

Vue.js 系列教程 5:动画

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

2.8K71

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

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

2.7K40

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

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

74020

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

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

6.8K20

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

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

17220

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

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

1.8K30

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基础知识,包括安装和设置、配置和使用

72430

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

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

89430

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

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

6.6K30

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

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

16310

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

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

1.8K10

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

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

26510

Bootstrap 模态框(Modal)插件基本应用

一、用法: 切换模态框(Modal)插件隐藏内容: 通过 data 属性:控制器元素(比如按钮或者链接)添加属性 data-toggle="modal",同时设置 data-target="#identifier...通过 JavaScript使用这种技术,您可以通过简单一行 JavaScript 来调用带有 id="identifier" 模态框: $('#identifier').modal(options...代码讲解: 使用模态窗口,需要有某种触发器,可以使用按钮或链接,这里我们使用按钮。...仔细查看上面的代码,会发现在 标签中,data-target="#myModal" 是要在页面上加载模态目标。 可以页面上创建多个模态框,然后为每个模态框创建不同触发器。...属性 aria-hidden="true" 用于保持模态窗口不可见,直到触发器被触发为止(比如点击相关按钮)。

4.4K00
领券