Zmiany elementu na stronie po pewnym czasie


(Beryś) #1

Witam!

Mam  problem, chodzi o ukazywanie elementu po wejściu na stronę. chodzi o to, że jak kliknę w menu, to przenosi mnie na stronę i po kilku sek. pojawia się element. klikam na inną pozycję menu, tamten element się chowa, pojawia się inny, przypisany do tej strony.

skrypt, który posiadam działa bez zarzutu, tylko element pojawia się po kliknięciu w menu będąc już na stronie. Wszystkie próby z setTimeout, zmiana klasy na visible działa ale tak samo, po kliknięciu w pozycję menu będąc już na stronie. Znowu jak użyję window onload to jakoś się to nie chce wszystko połączyć :wink:

do menu mam skrypt:

 

function pokaz (el) {
    $(".element").not(el).fadeOut("slow");
    $(el).fadeIn("slow");
}

$("#menu1").click(pokaz.bind(null,"#element1"));
$("#menu2").click(pokaz.bind(null,"#element2"));

itd.

jak to dopasować, żeby elementy pokazywały się tak jakby po załadowaniu strony??


(Drobok) #2

Pomijając wszelkie dywagacje nad sensem budowy twojego kodu html.

Używasz jquery, a połykasz function. O ile zrobiłeś obejście dociskając bind do swojej funkcji. To w wypadku settimeout o tym zapomniałeś i nie miał on prawa działać tak jakbyś chciał.

function pokaz (el,txt) {
    $(".element").not(el).fadeOut("slow");
    $(el).fadeIn("slow");
    var cth=window.setTimeout(function(){alert(txt)},2000);
}
$("#menu1").click(function(){pokaz("#element1","costam")});
$("#menu2").click(function(){pokaz("#element2","costam2")});

(Beryś) #3

niestety dalej jest taki sam efekt. po prostu taki musi byc efekt działania. klikam na menu1-przenosi mnie na strone-po kilku sek pojawia sie element1. klikam na inna pozycje menu-przenosi mnie na strone-po kilku sek. pokazuje sie element2 z tym ze elementów z innych podstron już nie widać.


(Drobok) #4

Testowałeś to ? W tym co podałem, pokazujesz div’a i po 2s pojawia ci się alert(w miejsce alerta wstawiasz cokolwiek)

Jeśli chcesz przesyłać cokolwiek między podstronami (nie w jednym pliku html) powinieneś przekazać argument przez get i na niej obsłużyć ten argument, a jeśli ładujesz pliki powinieneś użyć funkcji post.

Ew jeśli to nie twoja strona pozostaje ci tylko iframe albo curl


(Beryś) #5

no testowałem, widzę, że pojawia się alert. tylko tu elementem docelowo pojawiającym się ma być #element1. teraz jest tak, że będąc już na stronie muszę jeszcze raz kliknąć na #menu1 dopiero wtedy pojawia mi się #element1 a potem alert. takie rozwiązanie tylko bez alertu działało już wcześniej


(Drobok) #6

No nie bardzo wiem o co ci chodzi. Wrzuciłeś tylko to więc domniemałem że ładujesz podstrony w ten sposób.

Wrzuć całość bo dalej nei wiem w jaki sposób te strony ładujesz (a właśnie do ładowania podstron ten timeout powinieneś wrzucić)


(Beryś) #7

no to napisze to może w ten sposób.

powiedzmy, ze mam menu na każdej stronie w nav ul:

    <li id=“menu1”><a href=“strona1.php”>aaaa</a></li>


(Drobok) #8

Pytanie czy masz jakiś skrypt ajax by zmieniać strony bez przeładowania - bez takowego js’em tego nie zrobisz. Musiałbyś do każdego z plików dołączyć takiego timeout’a (ew wrzucić case na podstawie nazwy pliku w którym odwołujesz funkcje). (domyślnie display none dla każdego sub)

var cth=window.setTimeout(function(){$("#sub1").fadeIn("slow")},2000)

(Beryś) #9

bardzo dziękuję za pomoc, teraz widzę, że będzie działało ok. potem spróbuje na spokojnie to wdrożyć.  W każdym razie dzięki za pomoc i naprowadzenie. Pozdrawiam