2013-08-07 3 views
1

난 달성하기 위해 노력하고 무엇 :변경 CSS 속성 (위치를 왼쪽) 동적으로 setInterval을

나는 버튼이 있습니다. 이 버튼을 클릭하면 setInterval이 1 초에 한 번 다른 기능을 실행하도록 설정하는 기능을 실행합니다. 이 함수는 나누기를 왼쪽으로 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); 

및 마지막 애니메이션을 수행해야 collapser 함수 자체 :

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

나는 Interval이 firin 매초마다 경고()가 발생하기 때문에 매초마다. (하지만 상자는 한 번 왼쪽으로 이동 한 다음 다시 이동하지 않습니다 (!)).

여기에 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까?

+2

'남아 '는 정수가 아닌 * 길이 *를 취합니다. – Quentin

+0

아무것도 고칠 수는 없지만'setInterval (collapser, 1000)'을 사용하는 것이 좋습니다. 스크립트의 문자열을 전달하면 전역 범위에서 실행되고 ('eval' 호출과 같이 처리되므로 그 의미가 포함됩니다) ... 그래서'collapser'가 지역 함수라면 발견되지 않을 것입니다 예외를 throw합니다. 따라야 할 일반적인 국제 대회 – 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);