Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Гляньте плс мой код (https://javascript.ru/forum/misc/55062-glyante-pls-mojj-kod.html)

Paul_Wahtel 12.04.2015 17:41

Гляньте плс мой код
 
Всем привет, пишу функцию которая будет каждую секунду поднимать див на 50 пикселей в верх.
вот мой код
function upAndDown () {
        var lift = document.getElementById('lift');
	lift.style.marginBottom = "50px";
	}			
function lift () {
	timer = window.setInterval("upAndDown()", 1000);
       }


<a href="javascript:lift()">
			button
		</a>


при нажатии на ссылку диву единожды прибавляется margin-bottom: 50px; и все, хотя интервал сам продолжает идти, я просто только учусь js, что я написал не так?

рони 12.04.2015 18:38

Цитата:

Сообщение от Paul_Wahtel
прибавляется

и где в коде хоть один +

Paul_Wahtel 12.04.2015 23:33

Имеется в виду что ему присваивается margin-bottom 50 px, но лишь один раз.

рони 12.04.2015 23:37

Цитата:

Сообщение от Paul_Wahtel
лишь один раз.

а вы сколько раз хотели, если а = 5 то чему равно а ?
почему не 10 или 15

рони 12.04.2015 23:40

Paul_Wahtel,
:(
var x = 0;
function upAndDown () {
        var lift = document.getElementById('lift');
	lift.style.marginBottom = x +"px";
x += 50;
	}			
function lift () {
	timer = window.setInterval("upAndDown()", 1000);
       }


<a href="javascript:lift()">
			button
		</a>

Paul_Wahtel 12.04.2015 23:48

спасибо, что то я и вправду втыканул.

ruslan_mart 13.04.2015 07:36

Элемент лучше вынести за ф-цию, чтобы каждый раз не получать его через getElementById. timer тоже нужно объявить. В setInterval лучше передавать саму ф-цию, а не строко-код.

var lift;

(function() {
    var elemStyle = document.getElementById('lift').style,
        timer, x = 0;
    lift = function() {
        clearInterval(timer);
        timer = setInterval(function() {
            x += 50;
            elemStyle.marginBottom = x + 'px';
        }, 1000);
    };
})();


:)


Часовой пояс GMT +3, время: 14:44.