最赞回答 / 撞门人
不该在遍历内添加flag = true;的,假设有两个CSS属性,第一个icur != json[i] 这时flag =false,但是到第二个属性时如果icur == json[i],此时flag = true,将第一个false覆盖。所以不能达到想要的效果
2016-02-27
由于onmouseover事件冒泡,所以当鼠标在a标签内不断移动(不出a标签的范围)会不断碰到a标签内的子元素,事件再冒泡到a,使得不断出发a.onmouseover事件,结果就是里面的小图片不停地动,改成onmuseenter,这个事件不冒泡或者写代码取消onmouseover的冒泡。
2016-02-26
当要获取float属性的时候,使用键值会有bug。
IE:obj.style["styleFloat"]
其他:obj.style["cssfloat"]
IE:obj.style["styleFloat"]
其他:obj.style["cssfloat"]
2016-02-26
最新回答 / Metotaste
解决方案:需要把下面两行代码移动到timer=setInterval()这个方法里的函数的函数体里。 var oDiv = document.getElementById('div1'); var div_width = parseInt(getStyle(oDiv,'width'));最终有效的代码是这样的:<...code...>
2016-02-22
为了解决这个问题,Math.ceil就派上用场了,它会把0.75向上取整为1,这样div就又可以向右移动1px了,这时里目标点很近了,就以1的速度慢慢到达300,然后停止定时器。
同理,向左移动,计算出来的速度会是负值比如-0.75,就用Math.floor把速度向下取整为-1,这样,就避免了卡在某个像素点不动的问题。
Math.floor还是ceil这些运算的目的不是要把speed取到0,而是要让浏览器可以继续运算下去,然后用我们的if条件判断,等于itarget了就结束运动。
同理,向左移动,计算出来的速度会是负值比如-0.75,就用Math.floor把速度向下取整为-1,这样,就避免了卡在某个像素点不动的问题。
Math.floor还是ceil这些运算的目的不是要把speed取到0,而是要让浏览器可以继续运算下去,然后用我们的if条件判断,等于itarget了就结束运动。
2016-02-22
由于数值设置的原因,div移动到一定px后,进行相减再除20的运算后会出现小数,比如0.75,比如这时div移动到了290,程序里写到div的left=oDiv.offsetLeft+speed+'px',那么div的left就是290.75px,而浏览器是不允许出现小数的,会把0.75去掉,那么div的left就成了290,下次执行时div的left是290,算出来速度还是0.75,浏览器又省略了小数,结果就是div停在了290px,到不了目标点300。
2016-02-22
@ritasun 比如移动到的目标值是300px,通过300减去当前的坐标0,再除以20,结果是15,div以15的速度向右移动,这是第一次定时器执行的结果。30毫秒后再执行一次,目标移动到了15,通过300减去当前坐标15结果是285,285除以20结果的14.25,这样一次次运算下来,速度越来越小,比如速度是15、14.25、12.73、7.2。。。。这样的。
2016-02-22