最新回答 / 湛瞳
speed=speed>0?Math.ceil(speed):Math.floor(speed)是一个三目运算符,一般形式为:表达式1? 表达式2: 表达式3 其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。 你的没有输出啊,可以改为if(speed>0){speed=Math.ceil(speed);}else{speed=Math.floor(speed);}至于iTarget是函数的第二个参数,你在调用startMove...
2016-08-26
已采纳回答 / 桐谷还灬和人
因为没有具体代码没法具体判断:可能性有一下几个。------1.stopMove的 if 判断范围没写对。致使滑块"滑过了"。2.stopMove定时器没有清除。导致鼠标触发”滑回效果“,然而没有清除定时器clearInterval,导致计时器一直计时下去。在我们眼里看来就是”滑出去了“。
2016-08-24
已采纳回答 / 不再使用
speed=speed>0?Math.ceil(speed):Math.floor(speed);速度大于0就往上取整(用于显示出来)速度小于0就往下取整(用于缩回隐藏)等到最后速度(绝对值)小于1px/30ms的时候不至于被浏览器忽视(小数不承认)你这个情况是不是没有写这一句判定
2016-08-22
最新回答 / 我要成为前端大姐大
因为当三个iCur==json[attr],flag==false,之后一次执行定时器时,会将flag变为true,则变成true状态,for遍历中的结果并不会被执行,等于空运行一次for遍历后,true被带到if(flag){if(fn){fn()}},中执行关闭定时器和fn(),如果吧if(flag){...}放在for遍历中,最后fn()会被执行三次,for遍历的特性
2016-08-22
已采纳回答 / 小菜鸟飞
我觉得,因为他根本到不了0,,你的left是-468,一次加10,等到了-8的时候在加10,就是2,也不是0,就继续循环了,,你把left改成-460试试 ,应该就可以了
2016-08-21
已采纳回答 / 穿皮夹克的大熊
offsetLeft 为数值 不该+pxfunction leave(){ clearInterval(timer); timer = setInterval(function(){ var c = document.getElementById('yu'); if(c.offsetLeft <= -480){ clearInterval(timer); } else{...
2016-08-20
已采纳回答 / YuuyaRin
因为之前定时器的循环里,因为最后结果都是差零点几,结果最后导致多执行一次来满足target,然后最后运动的距离就超出了,负的向下取整,正的向上取就是为了弥补上除法除出来差的那零点几,然后就不会多执行那一次循环,就避免了超出和未运动到的情况
2016-08-20