Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [DHTML] Wyswietlanie warstw
Forum PHP.pl > Forum > Przedszkole
escobar1983
Witam mam taki kod. Jeden z drogich forumowiczow pomogl mi jednak po glebszym przyjrzeniu sie sprawy. problem nie dokonca zostal rozwiazany. Poniewaz jak wyswietlam na nowo strone ladowane sa wszystkie divy i zostaja wyswietlone. Dodam ze buduje mala strone o sobie i ten kod wykorzystuje do menu. Mowiac szerzej to chodzi mi o takie cv-online o mnie. Sytuacja z wyswietlaniem wszystkich divow dzieje sie rowniez gdy odswiezam strone. Z gory dziekuje za pomoc
Kod :
Kod

<script>  
function showInfo(id){
         var divy = document.getElementsByTagName('div');
        
         for (var i=0; i<divy.length; i++) {
                 if (divy[i].id.substring(0, 4) == 'info') {
                         if (divy[i].id == id) {
                              
                         } else {
                                 divy[i].style.display = 'none';
                         }
                 }
         }
}</script>  
<div id="nav">
                         <ul>      
                               <li><a  name="a" onclick="showInfo('info1')" >Start</a></li>
                            <li><a name="a" onclick="showInfo('info2')" >O mnie</a></li>
                            <li><a name="a" onclick="showInfo('info3')">Portfolio</a></li>
                            <li><a href="#">Kontakt</a></li>
                       </ul>
</div>  
<div id="info1" style="display:block;"> Jeden</div>
<div id="info2" > dwa</div>
<div id="info2" > trzy</div>
EarthCitizen
A masz dla tych divów jakiś styl domyślny, który je ukrywa? (np. display: none)
escobar1983
Sorry za tego ajax . Ok rozumiem ze to dhtml. teraz juz wiem. Nie nie mam do nich ustawione display:none. Jakies podpowiedzi?
EarthCitizen
No dobra, to jak te warstwy na starcie mają być ukryte?
escobar1983
Ma byc pokazana tylko START na poczatku. A pozniej w zaleznosci co wybiore. Jak rowniez po odswiezeniu strony ma byc tak na ktorej akurat sie znajduje.
EarthCitizen
No to jak chcesz po odświeżeniu mieć to samo, to musisz użyć ciastek smile.gif Zaraz Ci napiszę jak to ma być w tym poście...
escobar1983
super ale plus do tego to zeby te inne warstwy byly ukryte.Dziekuje ogromnie

Tak wiec jak to jest z tym moim problemem? Ktos pomoze?
erix
  1. Zrób sobie funkcję, która będzie wykonywana zaraz po wczytaniu dokumentu, a najlepiej po wczytaniu drzewa DOM (do znalezienia w google)
    1. chowasz wszystkie warstwy
    2. sprawdzasz, czy istnieje ciastko - jeśli tak - rozwiń warstwę, którą sobie zapisałeś; jeśli nie - pokazuj tylko pierwszą
  2. za każdym rozwinięciem warstwy zapisuj sobie jej nazwę w ciastku
EarthCitizen
Tak sobie myślałem nad tymi ciachami i może zrób to inaczej...

Poniższy sposób oparty jest na adresach lokalnych i przez to jest bardziej uniwersalny, odporny na wyłączone ciastka i co bardzo ważne - każda zakładka ma swój adres, dzięki temu możesz dodać zakładkę do ulubionych, przesłać linka znajomemu na GG/Tlen/itd...

Kod
<script type="text/javascript">

function getHash() {
        return top.location.hash.replace('#', '');
}

var current_bookmark = 'm-start';

function showInfo(show) {
        if (!show) {
                setTimeout("showInfo(1)", 1);
                return;
        }

        var show_bookmark = getHash();
        
        if (show_bookmark.substr(0,2) != 'm-' || current_bookmark == show_bookmark) {
                return false;
        }

        document.getElementById(current_bookmark).style.display = 'none';
        document.getElementById(show_bookmark).style.display    = 'block';

        current_bookmark = show_bookmark;
}

window.onload = function() {
        showInfo(1);
}
</script>

<div id="nav">
        <ul>      
                <li><a href="#m-start" onclick='showInfo()'>Start</a></li>
                <li><a href="#m-o-mnie" onclick='showInfo()'>O mnie</a></li>
                <li><a href="#m-portfolio" onclick='showInfo()'>Portfolio</a></li>
                <li><a href="#m-kontakt" onclick='showInfo()'>Kontakt</a></li>
        </ul>
</div>


<div id="m-start" style="display:block;">
        Start
</div>
<div id="m-o-mnie" style="display:none;">
        O mnie
</div>
<div id="m-portfolio" style="display:none;">
        Portfolio
</div>
<div id="m-kontakt" style="display:none;">
        Kontakt
</div>


Prefiks "m-" dałem, żeby skrypt nie próbował przełączyć każdego adresu lokalnego, bo nie tylko do menu go pewnie użyjesz...
escobar1983
jestes wielki stary smile.gif Tylko ze cos to mi nie chce latac pod IE
EarthCitizen
U mnie pod IE6 działa...
escobar1983
masz racje sorry pomylka:) dziekuje bardzo za pomoc! widze ci piwo!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.