首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在setInterval()中停止setInterval()

如何在setInterval()中停止setInterval()
EN

Stack Overflow用户
提问于 2015-12-18 23:16:49
回答 3查看 54关注 0票数 1

下面的代码将图像从屏幕顶部移动到底部。我想让这个setInterval()函数停止一次y==-100,但我不知道怎么.

代码语言:javascript
复制
var image = $('.background');
var y = 0;
setInterval(function() {
  if (y == -100) {
    //don't know what to add here
  }
  image.css('background-position', '0 ' + y + 'px');
  y--;
}, 100);

我想我需要使用clearInterval,但我不知道该返回什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-18 23:18:55

您可以在调用setInterval时存储该间隔的id,然后使用该特定间隔的id调用clearInterval

代码语言:javascript
复制
var image = $('.background');
var y = 0;
var intervalId = setInterval(function() {
  if (y === -100) {
    clearInterval(intervalId);
  }
  image.css('background-position', '0 ' + y + 'px');
  y--;
}, 100);
代码语言:javascript
复制
.background {
  background-image: url('//placehold.it/200');
  width: 200px;
  height: 200px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="background"></div>

票数 1
EN

Stack Overflow用户

发布于 2015-12-18 23:19:30

您需要存储来自setInterval的返回值,然后可以将其传递给clearInterval。返回的值是对间隔的不透明引用,因此不应该将其用于其他任何事情。

代码语言:javascript
复制
var image = $('.background');
var y=0;
var interval = setInterval(function(){
  if(y == -100) {
      clearInterval(interval);
  }
  image.css('background-position', '0 ' + y + 'px');
  y--;
}, 100);
票数 4
EN

Stack Overflow用户

发布于 2015-12-18 23:19:09

你可以这样做:

代码语言:javascript
复制
var image = $('.background');
var y=0;
var interval = setInterval(function(){
    if(y == -100) {
        clearInterval(interval);
    }
    image.css('background-position', '0 ' + y + 'px');
    y--;
}, 100);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34365355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档