为了账号安全,请及时绑定邮箱和手机立即绑定

JS动画效果

vivian Web前端工程师
难度初级
时长 2小时 8分
学习人数
综合评分9.60
537人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰
服了,有没有人遇到了就是链式代码只执行了第一个函数,函数内部的函数都不执行?比如说给一个div先把宽度从200增加到400,这是执行一次的方法对吧,宽度增加完了以后再把高度增加到500,但是这里我遇到的问题就是,第一次执行,宽度增加了,但是高度却不被执行,也就是内部的方法代码并没执行,调试发现直接被跳过了。。原来我在判断有没有方法的时候也就是if(fn){}这里,我把这个判断语句写在了clearInterval(timer)前面去了。。。我靠,就这样,代码没报错,到处去搜去问。。最后把位置颠倒一下就好了。。也就是把clearInterval这句停止定时器的代码先于if(fn)执行。。。。
老师需要男朋友不233333

已采纳回答 / 夜莺_47
如果speed是正数的话,向上取整,比如0.5取到1才有意义,毕竟0.5是有速度的而不是0;如果speed是负数的话,向下取整,比如-0.5取到-1,-0.5会进行反向运动从而达到停止条件iTarget == icur,如果为负数向上取整则Math.ceil(-0.5) = -0则达不到iTarget == icur。因此负数要像下取整Math.floor()
我不知道有些同学在嘲讽些什么,实现方法是很多,但是如果你换成这种思维方法去做能否实现,这是个学习过程。

已采纳回答 / 慕数据9255373
当你多次触碰时,上一次的定时器timer被 
var timer=null;
重新赋值了(即timer这个定时器的对象找不到了),导致clearInterval(timer),起不了作用。应该将var timer=null;写在函数的外面
姐姐课讲得真好!!
转发的,https://blog.csdn.net/qq_15096707/article/details/50571021
我这边的火狐浏览器,同时运动这一节内容,用了一下,最终结果200px的高,出来只有199,宽400变成了396px,就是回不到原点

最新回答 / qq_零_137
else {        icur = Math.round(parseFloat(getStyle(obj, attr)));      }这句错了,应该是else {icur = parseInt(getStyle(obj, attr)); //整数型}

最新回答 / qq_long妹_0
原因是style.width仅能返回以style方式定义的内部样式表的width属性值,故第24行代码需修改为<div id="div1" style="width: 200px"></div>,再把原先的width样式删除即可。

已采纳回答 / 点潇洒3575453
每次鼠标移入移出时先关闭定时器,然后再根据下面的条件决定是否重新开启一个定时器.

最赞回答 / hellf
跟css中的{margin:0;padding:0;} 没有关系,你的代码中,判断offsetLeft 的条件改为: if(odiv.offsetLeft>=0)  它就停下来了 ,因为在不断移动的过程中,不一定有0这个值还有一个问题,进入startMove()时, 需要先清除一下定时器,目的是保证同时只有一个定时器在运行,你的代码还给你,就改了两个地方:<!DOCTYPE html><html><head><title>动画</title>...
关于flag定义时的三个位置问题
1flag位于for循环的内部
flag在里面的话,只要flag未设false,并立刻跳出for循环,就导致定时器的终止,即对于解决老师提到的宽度201问题毫无帮助
2flag位于for外部,定时器内部
正确,在几个属性值到达自己的目标值前,不会提前终止定时器。
3flag位于定时器外,function函数内
可以运行,但有问题。
flag没用,只是因为没有关闭定时器,所以三个属性都到达了自己的目标值,与flag没有关系
检验方法:跳出for循环后的if语句内部加入alert(flag),最好放在清除定时器前,你就能看到,if内部并没有执行,网页中也没有提示框
66666 以前真没注意过 老师讲的不错~
课程须知
1.您至少已经具备JavaSript的知识。2.您已经具备一些开发经验。
老师告诉你能学到什么?
1.使用定时器实现简单动画。2.如何一步步封装库。2.培养编程的思想。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消