2013-08-07 44 views
1

我想实现:更改CSS属性(左侧位置)上动态的setInterval

我有一个按钮。当点击这个按钮时 - 它会触发一个函数setInterval来每秒运行一次另一个函数。此功能应该将分隔线向左移动100像素。

什么是实际发生的:

分频器移动100个像素到左侧,但随后停止,在任何后续的焙烧不动的setInterval函数。

其触发初始功能的图像:

<img id="playerimg" src="../../Downloads/1375889362_toggle-right_red.png" alt="" 
width="42" height="42" border="0" onclick="vidgalshow()"/> 

此函数初始化并触发间隔内的语句:

closemaindiv = setInterval("collapser()", 1000); 

最后应该执行动画的崩塌函数本身:

document.getElementById("maindiv").style.position = "absolute"; 
document.getElementById("maindiv").style.left = (document.getElementById("maindiv").style.left - 100); 

我知道Interval是firin g每秒,因为我有一个alert()每次运行。 (但盒子向左移动一次,然后不再(!))。

关于这里发生了什么的任何想法?

+2

'离开'长度*不是一个整数。 – Quentin

+0

不是说它会解决任何问题,但我会建议使用'setInterval(collapser,1000)'。如果你传递了一串脚本,它会在全局范围内执行(并且像'eval'调用那样处理,所以它具有这些影响)...所以如果'collapser'是一个本地函数,它将不会被发现并会抛出异常。只是一个大会遵循 – Ian

+0

感谢这些指针家伙。很有帮助。 – Jordan

回答

3

我相信你需要减去之前,解析当前值为数字:也

var currentLeft = parseInt(document.getElementById("maindiv").style.left, 10); 
document.getElementById("maindiv").style.left = (currentLeft - 100) + "px"; 

,我建议你传递一个函数引用给setInterval而不是字符串:

closemaindiv = setInterval(collapser, 1000);