首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >更新函数中对象的属性,然后使对象在函数之外可访问

更新函数中对象的属性,然后使对象在函数之外可访问
EN

Stack Overflow用户
提问于 2019-01-04 11:50:49
回答 1查看 37关注 0票数 1

我希望你能帮我解决这个问题,因为我在javaScript方面还是个新手。

我的目标是创建一个对象,并使复选框能够根据是否选中这些属性来更新该对象的属性。我可以在单个复选框的"change“侦听器函数中更新对象,但我希望能够将更新的对象传递回其他复选框侦听器函数。

基本上,我想把这个'tenant‘对象(其默认设置为'status’设置为‘true’)传递给多个复选框监听器,这些监听器可以更新对象。因此,我想我的问题是如何使更新的对象能够在复选框函数之外访问。下面的代码。提前感谢!

代码语言:javascript
运行
AI代码解释
复制
//Build 'tenant' object
var tenantObject = {
  "Tenants": [{
   "Name": "WeWork",
   "Status": true
  }, {
   "Name": "Regus",
   "Status": true
   }
]
 }

console.log(tenantObject)//Status is 'true'


//Tenant Checkboxes
    d3.selectAll("#WeWorkCheckbox").on("change", function() {
            var type = "WeWork"
            display = this.checked ? "inline" : "none";
            statusCheck = this.checked ? true : false
            if (statusCheck == false) {
                tenantObject.Tenants[0].Status = false
                console.log(tenantObject.Tenants)// This works - the WeWork item now reads 'false'
                return tenantObject.Tenants             
            } 
            });

console.log(tenantObject)//Status still reads 'true' for WeWork, I want this to reflect the update in the above function
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-04 12:40:57

您的代码正在工作,但在您有机会进行更改之前,您的最后一条console.log语句正在触发。基本上,从呈现引擎的角度来看,页面加载和以下事件发生在毫秒内:

  1. console.log tenantObject
  2. #WeWorkCheckbox上设置事件侦听器,等待更改
  3. 你又来了console.log tenantObject

很长一段时间后,从浏览器的角度来看--至少几百毫秒--一个更改事件在上触发,tenantObject.Tenants[0].Status的值被更改为falsetenantObject.Tenants被记录到控制台。

要证明您的代码工作正常,只需执行一个setTimeout,在5000毫秒后调用一个不同的函数到console.log tenantObject。这将给您足够的时间在复选框触发之前取消复选框,然后当复选框触发时,tenantObject.Tenants[0].Status的新值将被记录到.on函数之外的控制台。

如下所示(为了便于在控制台中可视化,我将console.log语句更改为只显示tenantObject.Tenants[0].Status ):

代码语言:javascript
运行
AI代码解释
复制
//Build 'tenant' object
var tenantObject = {
  "Tenants": [{
    "Name": "WeWork",
    "Status": true
  }, {
    "Name": "Regus",
    "Status": true
  }]
}

console.log(tenantObject.Tenants[0].Status) //Status is 'true'


//Tenant Checkboxes
d3.selectAll("#WeWorkCheckbox").on("change", function () {
  var type = "WeWork"
  display = this.checked ? "inline" : "none";
  statusCheck = this.checked ? true : false
  if (statusCheck == false) {
    tenantObject.Tenants[0].Status = false
    console.log(tenantObject.Tenants[0].Status) // This works - the WeWork item now reads 'false'
    return tenantObject.Tenants
  }
});

var showOff = function () {
  console.log(tenantObject.Tenants[0].Status);
}

setTimeout(showOff, 5000);

我不得不猜测您的HTML,因为它没有提供,因此作为参考,下面是我使用的HTML:

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

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <form action="/" method="POST">
    <input type="checkbox" name="WeWorkCheckbox" id="WeWorkCheckbox" checked>
    <input type="checkbox" name="RegusCheckbox" id="RegusCheckbox" checked>
  </form>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://d3js.org/d3.v5.min.js"></script>
  <script src="index.js" charset="utf-8"></script>
</body>

</html>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54045176

复制
相关文章
YouTube开源播放器中文使用指南
在这之前笔者使用原生的MediaPlayer、B站开源的IJKVideoView等播放器。直到发现ExoPlayer,这款由YouTube开发的播放器真的是非常强大。对于自定义播放器非常友好,里面将很多模块抽象成独立的组件可供使用者自行定制,当然官方也提供了一些默认的实现。如果你正在开发视频类功能,强烈推荐你尝试一下ExoPlayer。
吴延宝
2019/07/24
4K0
正确下载youtube视频的方式
youtube这个不存在的网站上有很多有用的资料,一般来说我们是可以下载所有视频到本地以供离线的情况下的研究学习,网上有很多工具提供了下载功能,但是在试用了很多标称很好用的软件后,老高发现,真的没有一个能和youtube-dl相提并论,所以老高还是记录一下如何使用正确使用youtube-dl!
老高的技术博客
2022/12/28
1.3K0
如何正确使用log
下面小编就为大家分享一篇使用log_format为Nginx服务器设置更详细的日志格式方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
习惯说一说
2019/07/04
2.4K0
[Java8]如何正确使用Optional
Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。这篇文章是建立在你对Optional的用法有一定了解的基础上的,如果你还不太了解Optional,可以先去看看相关教程,或者查阅Java文档。
KAAAsS
2022/01/14
7.1K0
Youtube开启或禁用HTML5播放器
用过MAC的TX都知道,如果没有FLASH想要播放YouTube的视频很麻烦。虽然用Chrome内置的FLASH很不错,但是动辄70+℃的CPU实在伤不起啊。H5播放器就没有这个弊端了,从此妈妈再也不用担心我的MAC了。
老高的技术博客
2022/12/27
1.4K0
iOS学习——iOS 宏(define)与常量(const)的正确使用
  在iOS开发中,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏与const修饰。你能区分下面的吗?知道什么时候用吗?
mukekeheart
2019/09/29
1.8K0
iOS学习——iOS 宏(define)与常量(const)的正确使用
如何正确的使用VSCode
由与我们的Coding工作比较辛苦,现在推荐大家一款VS code插件,专注于高(hun)效(shui)工(mo)作(yu),能让你更加高效的上(hua)班(shui)!
我被狗咬了
2019/09/23
4.7K0
如何正确的使用VSCode
如何“正确”使用技术词汇
大家知道,VESA 是视频电子标准协会的英文简称。它主导制定了一系列音视频领域的工业标准。最为大众熟知的标准之一就是 DisplayPort,还有目前在电视、显示器、手机屏得到广泛应用的 HDR 标准。
icsoc
2022/01/18
1.9K0
如何“正确”使用技术词汇
如何正确使用缓存技术
缓存技术是用来提升程序运行性能的常见手段,君不见, 阿里巴巴、新浪微博、美团网等互联网龙头企业都是用缓存技术来提升自己家网站的性能。然而,任何事物都有两面性, 缓存技术使用得当带来的好处自然不言而喻, 但是如果使用不当, 产生的副作用也够让人喝一壶的。 我们写服务器程序时,使用缓存的目的无非就是减少数据库访问次数降低数据库的压力和提升程序的响应时间, 然而根据具体的使用场景又可以派生出无数种情况, 比如说 程序频繁读取数据库, 但是查询获得的结果却总是相同的,这部分相同的结果是不是可以放入缓存 ? 获得查询
用户1608022
2018/04/11
2.2K0
如何正确的使用 order by
根据已有的知识,birth_city 字段出现在where条件中,我们在该字段上建立索引能加快访问速度。那么该语句的查询过程如下:
用户7447819
2021/07/23
2K0
iOS AVPlayer视频播放器
GOVVideoPlayer/GOVVideoController 是一个基于AVPlayer封装的视频播放器,支持播放/暂停、左右退拽快进、上下滑动调节音量、自动手动全屏、全屏时横屏Or竖屏、有缓冲进度指示条、卡顿指示器、切换视频源。 ---- 更新于2017/8/10,增加了GOVVideoController GOVVideoPlayer是在继承于UIView的基础上封装的视频View; GOVVideoController是在继承于UIViewController的基础上封装的视频视图控制器,
且行且珍惜_iOS
2018/05/22
4K0
如何正确合理使用 JavaScript async/await !
ES8 引入的 async/await 在 JavaScript 的异步编程中是一个极好的改进。它提供了使用同步样式代码异步访问 resoruces 的方式,而不会阻塞主线程。然而,它们也存在一些坑及问题。在本文中,将从不同的角度探讨 async/await,并演示如何正确有效地使用这对兄弟。
前端小智@大迁世界
2019/01/29
3.4K0
如何正确合理使用 JavaScript async/await !
如何正确使用padding和margin
前面两期我们学习了LinearLayout线性布局的方向、填充模型、权重和对齐,那么本期我们来学习LinearLayout线性布局的内边距和外边距。 关于padding和margin,很多同学傻傻分不清,相信通过今天的学习可以正确使用padding和margin。 一、内边距padding 默认情况下,组件相互之间是紧紧靠在一起的。但是有时候需要组件各边之间有一定的内边距,那就可以通过以下几个属性来设置,内边距的值是具体的尺寸,如5dp。 android:padding:为组件的四
分享达人秀
2018/02/02
4.1K0
如何正确使用padding和margin
干货!如何正确使用Git Flow
我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用。
哲洛不闹
2018/09/14
2.3K0
干货!如何正确使用Git Flow
如何正确使用图表颜色
前言 后台产品常常使用图表为用户直观呈现用户访问、机器性能等数据,辅助用户对数据进行分析,判断业务运行状况。在图表中必然少不了通过颜色来更加直观、有效地传递信息。但图表实际应用中,却存在颜色任意或者无意义地使用,造成噪音干扰。 那么,在图表中添加颜色时,如何正确地运用颜色来传递信息,帮助用户更好理解数据?本文将从以下几点进行陈述: 颜色传递特定信息 信息可视化原理 图表颜色应用 图表颜色使用建议 总结 颜色传递特定信息 在了解图表颜色该如何正确使用之前,先思考一个问题:在看图表中的颜色时,我们究竟能从中获取
腾讯云设计中心
2022/05/05
2.6K0
如何正确使用图表颜色
Python进阶——如何正确使用yield?
在 Python 开发中,yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构、协程与并发都会用到它。
_Kaito
2021/03/23
2K0
安装LaTeX_如何正确使用
(很多杂志期刊接受LaTeX电子版时会提供自己的模板,只要使用他们的模板即可完美地展现在对应的刊物中)
全栈程序员站长
2022/09/21
2K0
安装LaTeX_如何正确使用
IOS下P2P播放器开发如何实现?
目前可以利用p2p技术,实现支持磁力链接、普通链接甚至是种子链接播放的软件,基本上还是集中在PC端。比如市场占有比较多的西瓜影音、吉吉影音、先锋影音,还有迅雷等。但是在手机端除了迅雷似乎没太有比较出名的P2P播放器。那么P2P技术在移动端的应用,从技术上来说是否可实现?包括安卓和iOS系统
点量小芹DolitQin520
2019/01/31
2.9K1
YouTube Direct:使用 YouTube 创建你自己的视频网站
YouTube 最近发布了一个新功能,YouTube Direct,它能让你i在自己的网站上直接嵌入 YouTube 视频上传功能,用户就能直接在第三方网站上上传视频,而 Direct 的用户则能够审核视频,是否接受用户上传的视频。这样 YouTube 除了是一个视频分享网站之外,现在又真正成为了一个视频服务存储服务平台,让任何媒体,组织或者个人都能利用 YouTube 构建属于自己的视频网站。
Denis
2023/04/14
1.9K0
YouTube Direct:使用 YouTube 创建你自己的视频网站
点击加载更多

相似问题

youtube-ios-播放器-助手和chromecast

210

Youtube iOS播放器助手库没有工作

11

我能为youtube-ios播放器助手静音吗?

36

IOS YouTube助手库

12

YTPlayerView youtube-ios-播放器-助手暂停不起作用

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档