单击时,循环遍历每个对象键

2024-01-02

我还在学习 JS,有些东西比其他人更难理解。

就像这样:

我试图通过允许用户单击自定义按钮来更改谷歌地图的主题。

我正在使用 if else 效果很好,但我想添加更多主题并使用循环。用户每次单击时,都会选择:

object key 0, 
then click again object key 2 
and object key 3 
and repeat 

我可以获取对象键和值,然后我就迷失了。

  • 这是主题对象

    让主题= { 默认值:空, night: [具有嵌套数组的多个对象], dark: [具有嵌套数组的多个对象] }

  • 在谷歌地图内创建按钮然后添加EventListener

    让 themeToggle = document.createElement('button'); themeToggle.classList.add('controlUI'); themeToggle.innerHTML = ('模式'); themeToggle.title = '更改地图主题';

    map.controls[google.maps.ControlPosition.TOP_LEFT].push(themeToggle);

    让模式=真; themeToggle.addEventListener('点击', () => { 如果(模式){ map.setOptions({styles: theme.night}); } 别的 { map.setOptions({样式: theme.default}); } 模式=!模式; });

以上效果很好

我正在努力将 if else 转换为循环并选择每个对象键,然后将其添加到:

map.setOptions({styles: theme.night})

然后单击它循环遍历每个键并重复

themeToggle.addEventListener('click', () => {
    for ( let key  in theme) {
      map.setOptions({styles: theme[key]});
      console.log(theme[key])
    }
  });

它默认选择最后一个,我无法切换。

任何帮助都将非常感激,只需尝试将所有拼图加在一起即可。


将对象值收集到数组中,然后在每次单击时以模数递增索引:

const vals = Object.values(theme);
let i = 0;
themeToggle.addEventListener('click', () => {
  map.setOptions({styles: vals[i]});
  i = (i + 1) % vals.length;
});

虽然大多数环境都会导致对象Object.values在升序数字后跟插入顺序中,不能保证。如果您需要有保证的可预测排序,请使用Reflect.ownKeys (or Object.getOwnPropertyNames) 反而:

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

单击时,循环遍历每个对象键 的相关文章

  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • jQuery .push 到 .get 调用中的数组给出空结果

    谁能告诉我为什么下面给我一个空字符串 当我console log contentArray in the get 回调函数它显示数据 但是当我尝试在下面的代码中执行它时 结果为空 sectionArray contentArray func
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 3D 数组到 3D std::vector

    我在代码函数中用 3D std vector 替换了 3D 数组 它进入了无限循环 你能给我一个提示吗 我真的需要使用向量而不是数组 谢谢 我最初的代码是 arr is a 3D array of a sudoku table the 3
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 为什么 setTimeout 在 Chrome 中触发两次,而在 IE 或 Firefox 中则不然?

    有人能告诉我为什么 javascript 函数 生成新号码 在 Chrome 中触发两次 但在 IE 或 Firefox 中则不会 使用 Chrome 20 0 1132 57 IE9 和 Firefox 13
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • JavaScript RegEx:不同的结果:使用字符串和使用正则表达式“文字”构建模式?

    使用 RegExp 文字与字符串之间有什么区别吗 http jsfiddle net yMMrk http jsfiddle net yMMrk String prototype lastIndexOf function pattern p
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • Vaadin 12 将对象传递给 JavaScript 函数:无法对类进行编码

    Vaadin 12 Kotlin 项目 In my myPage html我有JavaScript myObject redirectToCheckout sessionId 1111 2222 所以我需要调用javaScript函数red
  • Google Maps API (v3) 添加/更新标记

    编辑 它现在可以工作 但如果用户不允许或没有基于位置的服务 则不会加载 请参阅 jsfiddle 示例接受的答案评论 我已经浏览了一些教程和问题 但我无法安静地理解正在发生的事情 或者在这种情况下 没有发生 当用户单击链接时 我正在加载地图
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容

随机推荐

  • Nuxt安装错误:规则只能有一个资源源(提供资源和测试+包含+排除)

    我成功安装了 Vuejs 和 Nodejs 但在安装 Nuxtjs 时遇到了问题 这就是我得到的 我已经问过一些朋友了 但是没有效果 感谢您的帮助 Error 规则只能有一个资源源 提供资源和测试 包含 排除 Rule can only h
  • 重铸任意深度的嵌套列表

    假设这个简化的例子 L lt list L Foo lt list L Foo Bar lt list L Foo Bar VAR lt TRUE L Lorem lt list L Lorem Ipsum lt list L Lorem
  • 加载第二个组件会导致“为组件 SidebarComponent 指定的模板不是字符串”

    我刚刚开始学习 Angular 我尝试创建一个简单的仪表板 我创建了 2 个组件 DashboardComponent 和 SidebarComponent Dashboard loads fine but when i load Side
  • 如何在 Grails 中按可为 null 关联的属性进行排序?

    我正在尝试对数据表进行排序 我有以下域 释义和示例 class Car Engine engine static constraints engine nullable true poor example I know class Engi
  • AWS Lambda执行环境预装了哪些NPM模块?

    最近我发现aws sdkAWS Lambda nodejs8 10 中预装了 NPM 模块 而且我在互联网上找不到任何有关它的信息 AWS Lambda 中预安装了哪些其他 Node js 模块 仅预安装了 aws sdk 软件包 其余所有
  • 检索解密数据时出现问题

    我正在研究加密解密程序 程序从用户那里获取输入并对其进行加密 然后它将加密的数据存储在ms access数据库表中 随后 从表中检索数据 解密并返回给用户 我将数据作为文本存储在 ms access 中 加密算法返回大小为 16 的字节数组
  • Golang:致命错误:运行时执行期间出现意外信号

    当我执行二进制文件时 我随机收到以下错误 有时有效 fatal error unexpected signal during runtime execution signal SIGSEGV segmentation violation c
  • 表示二维数组中索引的更简单方法

    我是编程新手 我创建了一个简单的井字游戏游戏 它接受二维数组的行和列的输入 但是 我想让它更简单并使用值1 9而是代表棋盘上的每个方块 我处理这个问题的方法似乎相当漫长和复杂 抱歉格式错误 因为我想节省空间 if pos gt 0 pos
  • 将样式应用于保存到 HTML 文件的 Pandas 数据框

    我在 Jupyter IPython 笔记本中有一个 Pandas 数据框 Jupyter 内的数据框作为 HTML 表格的样式非常好 标题行采用粗体样式 字体美观 表格边框较细 然后我将数据框导出到 HTML 文件 按照说明here ht
  • axios:如何一个接一个地运行多个请求?

    我有一个非常大的 ID 数组 数千个 ID 我想循环遍历这个数组 并对每个值向 API 发出请求 如下所示 12 32 657 1 67 forEach id gt axios get myapi com user id then data
  • 使用 GitHub Actions 从私有 GitHub 存储库安装 npm 模块

    我正在尝试使用 GitHub Actions 运行 Node js 项目的构建 作为npm install 我需要直接从私有 GitHub 存储库 而不是从 GPR 安装 npm 模块 In the package json I have
  • Java 8 Stream 函数将字谜列表分组为列表映射

    Java 8 即将发布 在学习 Streams 时 我遇到了一个使用其中一种新方法对字谜进行分组的场景 我面临的问题是我找不到使用 map reduce 函数对 Strings 对象进行分组的方法 相反 我必须创建与记录类似的方法聚合运算
  • Xcode -- 让force_load 使用相对路径

    某些库在链接到 Xcode 项目时需要 all load 链接器标志 但是 如果库之间存在符号冲突 这会导致链接器错误 解决方案是使用 force load 它可以有效地让您在某些库上使用 all load 但不能在其他库上使用 然而 这反
  • 如何仅使用 CSS 制作圆形面包屑

    有谁见过可用的 css3 解决方案来实现上述内容吗 我想找到一种不需要图像的方法 也不重写其他人可能已经很好解决的问题 有人知道现有的解决方案吗 使用起来相当简单CSS3 s border radius财产 现场演示 http jsbin
  • 重命名数据库中的所有表

    我有一个数据库 其中所有表都以一组相同的字符为前缀 这样做是因为它们曾经位于一个为宠物项目设置的共享数据库中 其中包含数百个其他表 应用程序以及数据库现在已准备好脱离该阶段并准备独立运行 我想删除每个表的前缀 有没有比右键单击并单独重命名每
  • 更改 nginx 上的标头“Django 管理”文本

    我跟着这个问题 https stackoverflow com questions 4938491 django admin change header django administration text更改我的 django 管理面板标
  • 根据表格数据找到每个部门的第三个最高工资

    我需要找出3rd maximum salary对于一个员工 对于一个部门的每个部门table if no 3rd maximum salary存在然后显示2nd maximum salary if no 2nd maximum salary
  • 如何从电子邮件地址获取 SMTP 服务器

    我想通过特殊的电子邮件帐户自动发送邮件 但现在 我只知道电子邮件地址 电子邮件受保护 cdn cgi l email protection和密码 那么你知道如何获取 SMTP 服务器吗 下面是我的 C 代码 SmtpClient clien
  • Perl:何时释放不需要的标量内存而不超出范围?

    我有一个应用程序 可以将大量文本数据读取为标量 有时甚至是 GB 大小 我用substr在该标量上将大部分数据读取到另一个标量中 并将提取的数据替换为空字符串 因为第一个标量中不再需要它 我最近发现 Perl 没有释放第一个标量的内存 但它
  • 单击时,循环遍历每个对象键

    我还在学习 JS 有些东西比其他人更难理解 就像这样 我试图通过允许用户单击自定义按钮来更改谷歌地图的主题 我正在使用 if else 效果很好 但我想添加更多主题并使用循环 用户每次单击时 都会选择 object key 0 then c