2013-08-07 81 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);