- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望动画连续工作,但控制台中总会出现错误:“VM1179:1 Uncaught ReferenceError: move is not Define”。不知道为什么...复制下面的代码
$(document).ready(function(){
function move(){
$("#block").animate({left:"+=50px" },1000).animate({top:"+=50px"},1000).animate({left:"-=20px"},1000).animate({top:"-=20px"});
setTimeout('move()',1000);
}
move()
})
最佳答案
看来您根本不需要 setTimeout()
。
假设您想要的是 yoru 动画循环并一遍又一遍地重复,执行此操作的正确方法是使用 .animate()
中的完成回调,而不是使用 setTimeout()
根本就没有。你可以这样做:
$(document).ready(function(){
function move(){
$("#block").animate({left:"+=50px" },1000)
.animate({top:"+=50px"},1000)
.animate({left:"-=20px"},1000)
.animate({top:"-=20px"}, 1000, move);
}
// call it the first time
move();
});
jQuery 将自动为您排序四个动画。
您想知道最后一项何时完成,以便您可以重新开始整个事情。您可以使用上一个 .animate()
操作中的完成函数来让它再次调用 move()
。因为此回调被称为异步,所以堆栈上没有堆栈构建或递归构建,并且可以愉快地永远运行。
作为解释,您的 setTimeout()
不起作用,因为当您将字符串作为第一个参数传递给 setTimeout()
时,该字符串将在全局作用域中,并且全局作用域中没有 move()
函数,因此找不到它并且没有执行任何操作。如果您像 setTimeout(move, 1000)
那样传递一个普通的 Javascript 函数引用,则该函数引用将在当前作用域中求值(甚至在进行 setTimeout 调用之前),并且该函数引用将被正确传递。您几乎不应该将字符串传递给 setTimeout()
。这只是一个几乎应该始终避免并且始终可以避免的坏习惯。但是,唉,看来您在这里甚至不需要 setTimeout()
。
如果您希望四个动画按顺序排列,然后暂停 1 秒,然后一次又一次地重复动画,您可以这样做:
$(document).ready(function(){
function move(){
$("#block").animate({left:"+=50px" },1000)
.animate({top:"+=50px"},1000)
.animate({left:"-=20px"},1000)
.animate({top:"-=20px"}, 1000, function() {
setTimeout(move, 1000);
});
}
// call it the first time
move();
});
这里,一个匿名函数作为最后一个动画的完成回调传递。在该完成函数中,运行 setTimeout()
,它将在 1000 毫秒内再次调用 move
。
P.S. 我注意到你的动画不是对称的,因此它不会返回到开始时的同一位置,因此每次运行时,该对象都会连续向右移动 30px,向下移动 30px以及结束。我不确定这是否是您的意图。
关于javascript - setTimeout() 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38472421/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!