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

JS动画效果

vivian Web前端工程师
难度初级
时长 2小时 8分
学习人数
综合评分9.60
537人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰
完结撒花,谢谢老师!

已采纳回答 / 为难自己干嘛
从true变为false后可以变成true的,if(icur != json[attr]){     flag=flase;}setInterval函数不是只执行一次的,最终达到运动目标再执行setInterval函数时,此时flag=初始值也就是true ,icur==json[attr],所以flag不会变成false了
老师 前台页面 给我们啊。。。
var _this=this.getElementsByTagName('i')[0];这一行这个【0】该怎么解释啊?

已采纳回答 / 慕之光
if(icur==json[attr]){                    clearInterval(obj.timer);                    if(fn){//上一个动作结束后,如果存在fn则调用fn                        fn();                    }                }看这段代码,同时运动时,当某个属性的当前值达到目标值时,就会关闭定时器,那么其他属性也就不得不停止运动,所以宽度达不到目标值
如果按照这个方法去传入width之后,不行啊

已采纳回答 / 墨曌
那个确实写错了,应该把flag写进定时器里

最赞回答 / zj5649799
      startMove(this,{width:200,height:200},function () {                       startMove(this,{opacity:30})你的这个不能这样写啊,要写成 startMove(this,{width:200,height:200,opacity:30});传参的时候json直接就完成了啊,最后一个是回调函数,不能这样调用的!

已采纳回答 / 慕之光
我试过把var flag = true; 放置到for in 上方和放在function start(obj,json,fn)这个函数的局部内都是可行的。两者的区别是:前者是在setInterval(   ,30)内,所以相当于每30ml对flag 赋一次 true; 后者的var flag = true; 相当于是“全局变量”,在setInterval(   ,30)内当然可以使用flag,更可以改变flag.

已采纳回答 / 泠泉石上
变量定义位置错了,应该在计时器里边定义obj.timer=setInterval(function(){    var speed,a=parseInt(getStyle(obj,'width'));    speed=(wid-a)/10;    speed=speed>0?Math.ceil(speed):Math.floor(speed);    if(a==wid)        clearInterval(obj.timer);    else        obj.style.width...
看了大家很多的评论,给正在挣扎的同学们一些小小的建议:看书为主,配合视频看为辅,如果看这个视频是你js学习的全部,我认为不太合理。
新手推荐这两本书:《jsDOM编程艺术》《js高级程序设计》两本书
课程须知
1.您至少已经具备JavaSript的知识。2.您已经具备一些开发经验。
老师告诉你能学到什么?
1.使用定时器实现简单动画。2.如何一步步封装库。2.培养编程的思想。

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消