问题标签 [setinterval]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2446 浏览

javascript - 使用闭包在循环中创建的javascript计时器或间隔

我正在使用 jQuery 在几个元素上设置一个计时器或间隔循环,以每隔几秒钟检查一次它们。我试过设置一个计时器并检查是否应该重新启动它,或者设置和间隔并检查是否应该停止它。

虽然简化了,但这基本上是我需要的:

类项的 ID 为 id_1、id_2、id_3。但我只是收到 3 个警报,所有警报都给出 id_3。在我的代码中,我开始尝试传递“this”,但不断简化它以找出问题所在。

我怎样才能让它每次都将变量复制到一个新地址?我知道我需要使用闭包。无论如何,它似乎都在引用另一个 var。

我尝试将其简化为带有计时器的循环,如下所示:

但我认为我只是让我的问题变得更糟,这似乎没有任何作用。

我已经搜索了以前的问题,但大多数都充满了大量额外的代码,而不是减少特定问题并以其他方式解决。我想通过让这个例子工作来了解它是如何更好地工作的。在写这篇文章的时候,我确实设法弄清楚我可以用一个帮助功能来启动计时器。

没有那个怎么办?有没有更好的办法?

0 投票
3 回答
1500 浏览

javascript - 使用带有原型的 setInterval 的 JavaScript 上下文问题

我试图在使用原型继承(我以前没有真正玩过)的同时解决这个上下文问题。我有一个 AutoScroller 对象:

准备好文档后,我会这样做:

问题都出现了,因为“this”总是指“p.startBtn”而不是 scr,所以当调用带有 setInterval 的 start 函数时,我得到一个错误“this.move() is not a function”。

我知道上下文是一个相当基本的概念,我似乎对此一无所知。关于如何解决这个问题的任何想法?

0 投票
1 回答
741 浏览

javascript - setInterval 窗口焦点和休眠

我遇到了一个奇怪的问题。我有一个使用 setInterval 保持会话活动的 javascript。但是,如果浏览器在一段时间内无人看管(或者让它在夜间打开,或者在另一个应用程序中工作失焦),则 setInterval 不会在 IE 中触发,并且允许会话过期。这在 Firefox 中不会发生。

有谁知道这是否是 IE 中 setInterval 的一个已知问题,有什么好的解决方案吗?

编辑(有关 setInterval 正在执行的更多信息):

setInterval 正在调用一个 ajax 函数,该函数要求服务器更新会话超时。

间隔设置为以会话超时速率的一半触发(每 10 分钟触发一次,会话在 20 分钟内超时)。

0 投票
2 回答
1924 浏览

javascript - setInterval / clearInterval 范围内的问题

我有以下代码,它工作正常,直到我点击#play 按钮。我假设这是因为 var intID 设置在另一个地方,并且当我 window.clearInterval() 它时它不在同一个范围内......我该如何解决这个问题?顺便说一句,这是 Google Maps API 版本 3

0 投票
2 回答
7758 浏览

javascript - Javascript 循环和 setInterval

这个 js 将取一个值,从中减去 X 数量,然后计数到该值。

我试图通过一个简单的 while 循环来完成这项任务,但我无法让它工作。

我想知道是否有人可以评论下面的 while 循环方法如何或为什么不起作用。

这是我可以让它工作的唯一方法:

非工作 While 方法:

0 投票
2 回答
1686 浏览

javascript - 在 jQuery element.data 对象中存储 javascript 间隔?

我正在开发一个名为Smooth Div Scroll的 jQuery 插件(一个 jQuery UI 小部件) ,我需要在其中存储对特定于页面上每个插件实例的间隔的引用。如果我只是写这样的东西:

...变量myInterval实际上是window.myInterval,它将由页面上插件的所有实例共享。因此,当我尝试为实例设置或清除间隔时,将设置/清除所有实例的间隔,因为它们都引用同一个窗口变量。

通过 jQuery API,我发现了.data方法,它用于存储与匹配元素关联的任意数据,因为插件的每个实例都有一个对应的 DOM 元素。完美的!使用这种方法,我可以存储特定于匹配元素的数据。所以我像这样构建了我的代码(其中 el 是对匹配元素的引用):

在某种程度上,这是可行的,因为插件的不同实例不再引用相同的变量(间隔)。但我注意到,如果我有一个包含 2-3 个插件实例的页面,并且我为每个实例设置了相同的间隔,则只有第一个实例开始其间隔。但是如果间隔的计时器很小,则只有部分元素开始它们的间隔。

我没有对实际值进行任何深入挖掘,但如果我在一页上有三个插件实例并且间隔设置为 5,如下所示:

...只有第一个实例会启动。如果我将其增加到 20-30,则其中两个实例将启动,如果我将其进一步增加到 50,则所有三个实例都将启动。这太诡异了?!

我的问题是:

存储对区间的引用(使用 .data)是个好主意吗?如果是这样,间隔失败的原因可能是什么?

请帮我解决这个问题 - 我很难过!如果您想要实际的源代码,请查看插件页面(本文顶部的链接)。

/托马斯·卡恩

0 投票
5 回答
8109 浏览

javascript - jQuery/Javascript:setInterval 检查 DOM 元素是否存在?

变量检查;function showLoader() { $('#mc_signup_form').prepend(' loading ...'); check_init(); }

我想知道为什么我的浏览器一直告诉我 check_trigger() 不存在?我正在我的 showLoader() 函数内部启动一个 setInterval。它应该触发 check_trigger。当两个 div 之一(.mc_error_msg 或 .mc_success_msg)存在时,我想清除间隔。

我究竟做错了什么?

0 投票
2 回答
15558 浏览

javascript - IE 和 setInterval() 不刷新/更新的问题

我正在使用 JavaScript/Jquery 使用数据库中的值自动更新页面,尽管它在 Internet Explorer 中似乎没有更新。它在 FireFox 和 Chrome 中运行良好。谁能解释什么是错的?看起来 IE 只是显示页面的缓存版本。我怎样才能防止这种情况发生?谢谢。

0 投票
4 回答
3543 浏览

javascript - setInterval 和未定义参数的问题

我正在尝试使用 canvas 元素在浏览器中创建一个基本的频闪灯。我期待 setInterval 继续调用 changeBG 函数以更改为随机背景颜色。这个函数本身就可以正常工作,但当被 setInterval 调用时就不行了。我尝试在萤火虫中拉出此页面,它告诉我颜色未定义。这是有问题的代码。

我是 javascript 的新手,所以任何洞察力都会受到高度赞赏。

0 投票
6 回答
16384 浏览

javascript - 如何通过“setInterval”踢屁股传递范围

我目前想知道是否有比通过参数'e'将此范围传递给lambda函数然后使用call()方法将其传递给'funkyFunction'更好的解决方案

(除了小问题:我一直在阅读有关 javascript 中内存泄漏的内容。lambda 函数如何影响我的内存?先定义它var i = function(e)...然后将其作为参数传递给 setInterval 更好吗?)