如何在闭包内移动 DOM 元素

2024-02-09

我正在尝试使用闭包这个答案 https://stackoverflow.com/a/41231853/370407增量移动 DOM 元素。最终,我想动态创建许多应该独立移动的 DOM 元素,这就是我尝试在函数中定义变量的原因。

给出的答案的例子是

var lightning = new Array();
lightning.push($(".lightning"));

var l0 = -210;

function thunkAdd(){
  var lThis = l0;
  console.log('set lThis to '+ lThis);
  return function inc() {
    console.log('lThis = '+ lThis);
    return lThis ++;
  }
  lightning[0].css("left", lThis);
  console.log('lightning[0] left = '+lightning[0].css("left"));
}

var incrementInterval = setInterval(thunkAdd(), 33);

Codepen 上的第一个示例 http://codepen.io/mrengy/pen/BQMMbL。查看控制台,似乎由于某种原因,console.log('lightning[0] left = '+lightning[0].css("left"));没有运行。

我尝试的另一种方法是:

var lightning = new Array();
lightning.push($(".lightning"));

var l0 = -210;
var lThis = l0;

function thunkAdd(){
  lThis ++;
  console.log('lThis = '+ lThis);

  lightning[0].css("left", lThis);
  console.log('lightning[0] left = '+lightning[0].css("left"));
}

var incrementInterval = setInterval(thunkAdd, 33);

Codepen 上的第二个例子 http://codepen.io/mrengy/pen/Jbxxqz。这将在屏幕上移动图像,但理想情况下(因为下一步是动态创建和移动许多这些图像)我想定义变量lThis在 - 的里面thunkAdd函数第一次运行时,如果定义了,则递增它并使用lThis变量来移动图像。我怎样才能做到这一点?


正如注释中已经提到的,return后的代码不会被执行,所以你永远不会改变元素的css left属性,而只是增加变量。

您需要移动lightning[0].css("left", lThis);以间隔执行的内部闭包。

See 更新的例子 http://codepen.io/anon/pen/XNOGpO?editors=1111

您也可以考虑使用jqueryanimate http://api.jquery.com/animate/而不是这个(您也可以使用许多元素或在循环中执行此操作)

$(".lightning").animate({left: '2000px'}, 10000, 'linear');

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

如何在闭包内移动 DOM 元素 的相关文章

  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • jQuery 可以在用户输入数字时添加逗号吗?

    当用户输入数字时 如何动态添加逗号 有没有一个好的数字格式化程序可以提供帮助 我必须稍后添加这些数字 所以我最终必须删除一行中的逗号 但屏幕需要显示逗号以提高可读性 运行代码片段以查看其工作情况 input number keyup fun
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • jquery从变量中删除html元素

    我将 html 保存在变量中 var itinerary events today html 我有很多 html 和一个按钮我想删除 它的 ID 为 myButton 如何从变量中保存的 html 中删除它 我建议这种方法 var itin
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • Javascript/Jquery:确定用户是否使用鼠标滚轮、滚动条或键盘滚动

    我正在尝试让用户界面正常工作 如果他们使用鼠标滚轮 我需要让它以一种方式滚动 如果他们使用滚动条 我需要让它以另一种方式滚动 如果他们使用键盘 我需要让它以另一种方式滚动 我相信滚轮和滚动条都充当鼠标事件 但是当单击滚动条时我无法让 jav
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • eclipse (pom.xml) 中的 Maven 错误:无法传输 org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4

    我想使用 Maven 来创建 Web 项目来自动导入我需要的所有库 所以我选择 maven archetype webpp 之后我在 pom xml 文件上收到此错误 Description Resource Path Location T
  • 属性不可分配给接口中的字符串索引[重复]

    这个问题在这里已经有答案了 我有以下接口 export interface Meta counter number limit number offset number total number export interface Api
  • C# 中的 LFU 缓存?

    C 中是否有现成的 LFU 缓存 Java 有大量的 LFU 缓存实现 应该很容易移植到 C 例如 http faq javaranch com view CachingStrategies http faq javaranch com v
  • 识别图像中的 visio 形状

    在提供 SCADA 解决方案时 我们经常会获得结构化控制图 如下所示的 visio 类似流程图 中指定的最终用户规范 这些规范通常以 PDF 格式或图像形式提交 为了在 C 中访问这些 我希望使用 OpenCV 库之一 我正在研究模板识别
  • C++ 数据库访问库

    背景 我有一个用本机 C 编写的应用程序 它使用 wxWidgets 工具包的 wxODBC 数据库访问库 该库正在removed http wiki wxwidgets org ODBC来自 wxWidgets 的所有未来版本 我需要用另
  • 调用aspx页面随机返回图像慢

    好的 问题来了 我有一个asp net网站 有一个名为GetThumbnail aspx的aspx页面 代码如下 string newThumbnailPath ReaderUtilities GetThumbnailPath ptiId
  • Three.js / OrbitControls 未定义

    当我尝试导入 OrbitControls js 时 出现以下内容 我得到了Cannot use import statement outside a module error 所以 我使用 但这次我得到 ReferenceError Orb
  • 三.js渲染完成

    有没有办法知道对象何时完成渲染 我知道其中一个示例中有一个进度条 但我正在寻找一个简单且不复杂的示例 我已经查看了我正在使用的加载器 OBJMTLLoader 和渲染器 WebGLRenderer 我没有注意到一个简单的 renderer
  • 如何在 Enum 上设置空间

    我想在我的枚举上设置空间 这是我的代码示例 public enum category goodBoy 1 BadBoy 我想设置 public enum category Good Boy 1 Bad Boy 当我检索时我想看到Good B
  • 从 r 连接 oracle

    我是新来的R并尝试使用此处所述的方式连接到 Oracle 我下载了即时客户端 但除了一些 dll 文件之外找不到任何东西 请大家逐步指导我如何从以下位置连接到 Oracle R 我查看了一些解决方案 但它们无法解决 请告诉我是否有连接到 o
  • 如何用 C++ 为 GLSL 制作一维 lut

    我开始了解如何实现片段着色器来执行 1D LUT 但我正在努力寻找任何好的资源来告诉您如何在 C 中制作 1D LUT 然后对其进行纹理处理 因此 对于一个简单的示例 给出以下 1D lut 我会用以下数据创建一个数组吗 int color
  • startService() 从服务类本身

    我尝试从服务类启动 android 服务 这样做的原因是为了实现一定的平台独立性 这样做我在 android content ContextWrapper startService ContextWrapper java 326 处收到 N
  • fromtyping_extensions import ParamSpec ImportError:无法从“typing_extensions”导入名称“ParamSpec”

    我正在研究 FastAPI 并发生了这个错误 from fastapi import FastAPI import uvicorn app FastAPI app get ping async def ping return Hello I
  • ssh 脚本不会将控制权返回给父脚本

    我试图通过将其写入远程服务器的标准输入来执行本地脚本ssh命令 脚本运行良好 但随后ssh不退出 它只是挂起 并且控制权不会返回到父脚本 父外壳 for HOSTNAME in HOSTS do ssh t t HOSTNAME bash
  • 限制要创建的模型实例的数量 - django

    我有一个模型 我只想从中创建一个实例 并且不应允许更多实例 这可能吗 我有一种感觉 我在某个地方看到过这种做法 但不幸的是我无法找到它 编辑 我需要这个来构建一个极其简单的 CMS 我有一个 FrontPage 和 Page 类继承的抽象类
  • R 命令行将文件名传递给参数中的脚本 (Windows)

    我很难将文件名传递给 R 脚本 该文件是一个 csv 文件 其中包含多次运行脚本的批处理参数 我尝试将其包含在此处 以便用户无需编辑 R 脚本即可指定该文件的位置 我的 Windows 命令行语法是 R CMD BATCH slave ar
  • 子类化 UIView 以在 Quartz 中绘制

    我正在尝试使用 Quartz 2D 在我的 iPhone 应用程序中绘制图形 我知道我必须通过子类化 UIView 并重写 drawRect 函数来做到这一点 我正在努力追随this http www techotopia com inde
  • 按一个列表对另一个列表进行排序

    我有 2 个列表对象 一个只是整数列表 另一个是对象列表 但对象具有 ID 属性 我想要做的是按照与整数列表相同的排序顺序按对象的 ID 对对象列表进行排序 我已经玩了一段时间了 试图让它发挥作用 到目前为止还没有什么乐趣 这是我到目前为止
  • 用于 iPhone 应用程序开发的 Objective-C 中的字符串标记器

    我正在写一个字符串标记器Objective C http en wikipedia org wiki Objective C for an iPhone应用程序 http en wikipedia org wiki IPhone Third
  • 如何在闭包内移动 DOM 元素

    我正在尝试使用闭包这个答案 https stackoverflow com a 41231853 370407增量移动 DOM 元素 最终 我想动态创建许多应该独立移动的 DOM 元素 这就是我尝试在函数中定义变量的原因 给出的答案的例子是