[JS] scrollowanie tekstu

0

od razu zaznaczam, ze w JS praktycznie nigdy nie siedzialem. nam tylko jakies tam podstawy podstaw.
mam jakis tam np DIV o stalej dlugosci.
chce zrobic taki efekt, zeby ten DIV przejechal od lewej do prawej.
stawiamu mu w CSS position na relative.
wymyslilem, ze moge w JS w petli zwiekszac div.style.left
ale mam jeden problem:
przegladarka nie renderuje mi tego efektu przejscia - DIV od razu przeskakuje do prawej strony.

mam nadzieje, ze zostalem zrozumiany. jestem juz zmeczony i nie wiem, co pisze ;)

0

no tak, przeglądarka przenosi Twojego diva zaraz do prawej strony, bo operacja jest wykonywana tak szybko że nie zdążysz zauważyć pojedynczych ruchów. setTimeout rozwiąże Twój problem;)

0

to moze po prostu pokaze, co napisalem:

function scroll()
{
	elem = document.getElementById("text");
	for (i = 0; i < 400; i++)
	{
		setTimeout("elem.style.left = i+'px'", 1000);
	}
}

a dziala to tak, ze czeka sekunde i przeskakuje do ostatniego miejsca :/
to chyba jakos nie rozumiem tego setTimeout

0

czy celowo elem jest globalne? imho zjadłeś tam var, a jeśli tak, to masz niezdefiniowane elem wewnątrz setTimeout (zawartość tej funkcji wykonuje się poza kontekstem funkcji). ale to nie ma nic wspólnego z błędem.
wszystkim akcjom dajesz 1000ms opóźnienia, więc wszystkie wykonują się po takim czasie. akurat przypadkiem 1000ms dla każdej trwa tyle samo. zapomniałeś dodać i:

function scroll()
{
    for (i = 0; i < 400; i++) setTimeout("document.getElementById('text').style.left = i+'px'", i*50);
}

jednak zrobiłbym to jeszcze inaczej: wywoływał scroll z opóźnieniem z odpowiednim krokiem, nie stawiasz wtedy 400 timerów tylko jeden i nie masz problemu ze zrobieniem cyklicznego przewijania:

function scroll(counter)
{
    document.getElementById('text').style.left = (counter*50 % 1000) + 'px';
    counter++;
    setTimeout("scroll("+counter+")", 50);
}

(kod pisany z palca, mogą być drobne błędy)

1 użytkowników online, w tym zalogowanych: 0, gości: 1