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

JS动画效果

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

已采纳回答 / 刹那烟华丶
<...code...>这一行出错了,你用的是中文字符下的符号,应该是这样的:<...code...>

已采纳回答 / 妹妹大胆往前走
那就是页面已加载就运行;如:<script>document.getElementById("myFrame").addEventListener("load", myFunction);function myFunction() {    document.getElementById("demo").innerHTML = "Iframe is loaded.";}</script>

已采纳回答 / 不再热情似火
 flag放在函数外面也行,但是每次执行都必须初始化 flag 为 true,其次,flag 的 初始化 必须放在 for in 循环上面(不管你在哪定义flag)。 因为是for in 循环,参数达到目标之后,确实不执行你说的 icur != json[changeType] ; 但是,其余的for 循环时,会对其他的元素进行这个判断 if (attr !== json[attr] ) ;如果不等,flag 就变成了false;你可能看错了一个地方,if(flag === true){.....} 是放...

已采纳回答 / Csunnnnn
思路上分析,可以肯定问题出现在条件判断上,即tmd == 0.3这个条件从来没成立过,实际上是永不成立,这是浮点数的锅。目前一切语言的浮点数计算都是近似计算,会精确到小数点16位以上。所以对于浮点数变量tmd来说,人为感觉是 tmd == 0.3的时候, tmd实际值则是 0.300000000000001之类的值,所以不等。想要看清tmd实际值,只需在 tmd = tmd - 0.1;这句话后面加alert(tmd),就看得一清二楚。

已采纳回答 / 为难自己干嘛
从true变为false后可以变成true的,if(icur != json[attr]){     flag=flase;}setInterval函数不是只执行一次的,最终达到运动目标再执行setInterval函数时,此时flag=初始值也就是true ,icur==json[attr],所以flag不会变成false了

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

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

已采纳回答 / 慕之光
我试过把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...

已采纳回答 / mirrorofsky
var oDiv=document.getElementsByTagName('div'); //声明变量oDIV[];oDIV[i].timer只是向oDiv[i]中添加了一个名字叫timer的属性,不是声明对象。为对象添加属性:var a;(声明一个名字为a的对象),a.myname=Tom; (为对象a添加一个名字为mymane的属性,值为Tom)   

已采纳回答 / 权哲
if(boss.style.opacity==itarget)clearInterval(timer); 这块没能清除 计时器,boss.style.opacity 他算出的是浮点数就是0.3不可能等于itarget30。把他换成alpha 就好了。

已采纳回答 / lemonda
嗯经评测 在DW里运行在 FireFox,Chrome,IE8 都可以运行的。

已采纳回答 / 浪子丶
最开始没有把CSS样式初始化,加一段代码    *{margin:0;padding:0;}即可以完美的解决你这个问题
课程须知
1.您至少已经具备JavaSript的知识。2.您已经具备一些开发经验。
老师告诉你能学到什么?
1.使用定时器实现简单动画。2.如何一步步封装库。2.培养编程的思想。

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消