对函数中的变量进行分组

2024-01-13

我有一种感觉,这是如此明显,当(如果)解决时我会感到羞愧 - 但我就是无法让它发挥作用。

我有一个 html+javascript 页面,其中包含多个项目,所有项目都需要通过用户点击来显示或隐藏。 所以我有 x 数量的 div,例如:

<div id="myDIVA" style="display:none;">blabla 1</div>
<div id="myDIVB" style="display:none;">blabla 2</div>
<div id="myDIVC" style="display:none;">blabla 3</div>

并且通过单击 div 来隐藏和/或显示它们:

<div onClick="myClickFunctionA()">Show only ONE</div>
<div onClick="myClickFunctionB()">Show only TWO</div>
<div onClick="myClickFunctionC()">Show only THREE</div>

简单的脚本如下:

<script>
    var a = document.getElementById('myDIVA');
    var b = document.getElementById('myDIVB');
    var c = document.getElementById('myDIVC');
function myClickFunctionA() {
        a.style.display = 'block';
        b.style.display = 'none';
        c.style.display = 'none';
}
function myClickFunctionB() {
        a.style.display = 'none';
        b.style.display = 'block';
        c.style.display = 'none';
}
</script>

我想做的是能够对变量进行分组,这样我就可以拥有如下功能:

function myClickFunctionA() {
        a.style.display = 'block';
        b + c.style.display = 'none';
}

我有很多div!因此,这可能看起来很愚蠢,但对我来说,能够对变量进行“分组”以方便编辑是很有意义的。

所以我希望有人能提供一个简单的解决方案:-) 谢谢


数组可能是一个很好的用例:

var elemsById = ["myDIVA","myDIVB","myDIVC"]
 .map(id=>[id,document.getElementById(id)]);

因此,每当我们想要显示这些元素之一时,我们都会迭代所有这些元素,并根据它们的 id 隐藏/显示它们:

function showThisAndHideRest(showId){
  elemsById.forEach(function([id,el]){
    el.style.display=id===showId?"block":"none";
  });
}

所以你可以这样做:

showThisAndHideRest("myDIVA");

注意:上层使用了一些很酷的 ES6 功能,但尚未得到所有浏览器的支持。实际上不需要将 id 存储在数组中,因为它已经是 el 的一部分(el.id),但我只是想使用一些参数解构......

Run http://jsbin.com/woxebemico/edit?output

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对函数中的变量进行分组 的相关文章

随机推荐

  • ImportError:无法从“google.protobuf.internal”导入名称“builder”

    我正在关注 22点22分 发现这段代码有错误 python SCRIPTS PATH generate tfrecord py x IMAGE PATH train l ANNOTATION PATH label map pbtxt o A
  • 如何通过 XHR onProgress 函数使用压缩/压缩内容?

    我之前见过很多类似的问题 但我还没有找到一个能够准确描述我当前问题的问题 所以这里是 我有一个页面通过 AJAX 加载一个大的 0 5 到 10 MB 之间 JSON 文档 以便客户端代码可以处理它 加载文件后 我不会遇到任何意外的问题 但
  • CakePHP 3 控制器事件实现示例

    CakePHP 3 0 文档包含如何使用模型创建事件的示例 我试了又试 但它不适合我 有谁有使用自定义事件的 CakePHP 3 x 示例 其中控制器在触发事件的控制器中设置变量 假设我们有一个管理仪表板 您希望使用事件将一些代码注入其中
  • 我真的需要为 const 对象实现用户提供的构造函数吗?

    我有代码 class A public A default private int i 1 int main const A a return 0 它在 g 上编译得很好 参见ideone http ideone com PryGs5 但在
  • 看不到远程分支

    我仍在学习 git 不确定一些基本的东西是如何工作的 我通过执行以下操作创建了本地分支 git branch AppStore 我不记得如何将该分支推送到 github com 但我可以在存储库上看到 MyBranch 当我做 git br
  • AngularJS 模块和外部控制器

    我有一个包含多个容器的页面 每个容器都有自己的控制器 但指向一个工厂 该工厂处理与 Web 服务 API 交互的所有逻辑 我想为每个控制器都有一个单独的文件BUT我希望所有这些都在一个模块中 我一生都找不到如何将不同文件中的控制器包含到一个
  • 我无法运行超过 100 个进程

    我有大量的 shell 命令通过授权服务的 AuthorizationExecuteWithPrivileges 调用以 root admin 权限执行 问题是 一段时间后 10 15 秒 可能是 100 个 shell 命令 程序停止响应
  • iOS 7 启动图像,仅在设备上显示黑屏

    我至少在 stakoverflow 检查了与此问题相关的所有问题 答案 但没有任何成功 到目前为止我的问题是 我创建了一个新的应用程序 目标 IOS 7 并且我在图像中添加了我的启动图像和我的应用程序图标 xcassets 文件夹 当我在模
  • Eigen:返回对带有编译时维度检查的矩阵块的引用

    我要问的是一个概括这个问题 https stackoverflow com questions 13548253 eigen library return a matrix block in a function as lvalue 具体来
  • 在 UITableViewCell 内编辑 UITextField 时禁用 UITableView 自动滚动

    我正在使用自定义UITableViewCell在我的里面UITableView 这些中的每一个UITableViewCells 相当高并且包含UITextField在顶部 当用户点击UITextField为了编辑它 会出现一个键盘 然后UI
  • C++ 中的静态函数调用非静态函数 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一堂课 比如 Class Tes
  • Spring 4 Websocket - 没有任何反应

    我正在学习 spring 4 websocket 如果有人可以指导我逐步学习 spring 4 websocket 或者可以推荐一些书籍 让我可以在其中找到有关上述主题的逐步实用方法 我将非常感激 但在此之前 我尝试使用 tomcat 8
  • 如何解释 PyPi 包名称中的命名约定

    这可以在许多软件包中找到 例如这个 https pypi python org pypi pip https pypi python org pypi pip pip 9 0 1 py2 py3 none any whl 如何解释这个命名约
  • Rails 4 - 如果条件不适用

    我想创建一个具有某些条件的范围 其中返回的不是特定范围 目前 该解决方案有效 scope my scope gt my var scope where TRUE if my var condition1 scope scope where
  • 是否有可用于 ASP.NET MVC 开发的附加库或工具?

    我的第一次经历ASP NET MVC实体框架引起了我对这个框架的兴趣 我想实现一些基本的应用程序 涵盖现实世界 Web 应用程序的基本要求 到目前为止 VS 2008 提供的支持已经令人印象深刻 然而 对于某些领域 使用现有的附加组件或各种
  • 通过 ES6 模块导入加载和使用旧版 JS 模块(例如 IIFE)

    I have IIFE https developer mozilla org en US docs Glossary IIFE旧应用程序中需要适用于 IE10 的某些库代码的函数 无 ES6 模块加载等 但是 我开始开发一个将使用 ES6
  • 如果我想添加 CSS 我应该将其粘贴到哪里?

    这是我需要添加 CSS 的页面 http upload wikimedia org wikipedia commons a a5 Map of USA with state names svg http upload wikimedia o
  • 如何从android中的recyclerView中删除项目

    在我的应用程序中 我应该使用 recyclerView 并删除一些项目 我想从中删除一些项目recyclerview为此 我在以下代码中编写Adapter public class MyAdapter extends RecyclerVie
  • Rails 数据禁用-带有重新启用按钮

    我有一个具有 JavaScript 验证功能的 Rails Devise 表单 当用户按下提交时 验证就会开始工作 并且用户会重新关注他们需要的表单 但是 rails 使用 data disable with 在单击按钮后禁用该按钮 因此在
  • 对函数中的变量进行分组

    我有一种感觉 这是如此明显 当 如果 解决时我会感到羞愧 但我就是无法让它发挥作用 我有一个 html javascript 页面 其中包含多个项目 所有项目都需要通过用户点击来显示或隐藏 所以我有 x 数量的 div 例如 div sty