Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pokazywanie, ukrywanie div
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Aztech
Mam funkcję która mi pokazuje/ukrywa element na stronie
Kod
function openClose(id)
{
    document.getElementById(id).style.display = (document.getElementById(id).style.display == "none") ? "block" : "none";
}

oraz taki kod w templacie
  1. <a href="java script:openClose('personalSettingList')" title="kliknij aby zobaczyć więcej">Twoje indywidualne ustawienia:</a>
  2. <ul class="groups" id="personalSettingList">
  3. <li><span>email widoczny:</span> {$user.vis_email}
  4. {if $user.vis_email eq tak}
  5. <a href="user.php?action=chngprfl,vis_email,0" title="ukryj mój email przed innymi użytkownikami" class="unsuscribe" onclick="java script:openClose('personalSettingList')">ť ukryj przed innymi użytkownikami</a>
  6. {else}
  7. <a href="user.php?action=chngprfl,vis_email,1" title="pokazuj mój email w moim profilu" class="unsuscribe">ť pokazuj w informacjach o mnie</a>
  8. {/if}
  9. </li>
  10. <li><span>gg widoczne:</span> {$user.vis_gg}
  11. {if $user.vis_gg eq tak}
  12. <a href="user.php?action=chngprfl,vis_gg,0" title="ukryj mój numer gg przed innymi użytkownikami" class="unsuscribe">ť ukryj przed innymi użytkownikami</a>
  13. {else}
  14. <a href="user.php?action=chngprfl,vis_gg,1" title="pokazuj mój numer gg w moim profilu" class="unsuscribe">ť pokazuj w informacjach o mnie</a>
  15. {/if}
  16. </li>
  17. </ul>

Na początku ustawinia sa niewidoczne. Klikam, pokazują się. Do tego momentu jest ok, tak jak chccę. Ale po kliknięciu:
- ukryj przed innymi użytkownikami
- pokazuj mój email|numer gg w moim profilu
ustawiania znów mi znikają, zastosowany jest display:none do ul. A chciałbym żeby tak nie było, tylko żeby znikało po ponownym klknięciu: Twoje indywidualne ustawienia;

P.S. Gdy usunę display:none to zachowuje się tak jak chcę z tym że ustawienai są widoczne od razu (a chciałbym żeby nie były)

Ma ktoś jakieś pomysł jak to zmienić?
shpyo
Czy przypadkiem nie dzieje się tak, bo masz przeładowanie strony?
Aztech
Prawdopodobnie. Ale na razie nie widzę sposobu aby temu zaradzić. Spróbuję wprowadzić jakiś parametr, żeby rozróżniać wejście na stronę a zmianę wartości parametru, ale nie wydaje mi się to optymalnym rozwiazaniem. Może da się jakoś inaczej? Masz może pomysł?
Ja_Szczur
a może tak:

  1. // jeżeli w adresie włączyliśmy bądź wyłączyliśmy tę opcję
  2. if( document.location.href.indexOf( 'action=chngprfl,vis_gg,0' ) > 0 )
  3. {
  4. jakiśTamElement.style.display = 'block';
  5. }
shpyo
bez zmiennej pomocnicznej pobieranej z bazy się tego nie obejcie, chyba że użyjesz AJAX'u
Aztech
To może jeszcze jeden inny problem.
Mamy 4 DIV-y. Nie mają ustalonego dislpaya. Nad każdym DIV-em jest link co ukrywa/pokazuje DIV-a pod nim. Czy da się zapamiętać te rozwinięte i zwinięte DIV-y. A jak tak to jak?
kwiateusz
ja to rozwiązałem tak

Kod
function $(id)
{
      itm = null;

       if (document.getElementById)
       {
            itm = document.getElementById(id);
        }
     else if (document.all)
       {
        itm = document.all[id];
       }
       else if (document.layers)
       {
        itm = document.layers[id];
       }

       return itm;
}
function my_getcookie( name )
{
    var cname = name + '=';
    var cpos  = document.cookie.indexOf( cname );

    if ( cpos != -1 )
    {
        cstart = cpos + cname.length;
        cend   = document.cookie.indexOf(";", cstart);

        if (cend == -1)
        {
            cend = document.cookie.length;
        }

        return unescape( document.cookie.substring(cstart, cend) );
    }

    return null;
}

function my_setcookie( name, value)
{
      var expire = "; expires=Wed, 1 Jan 2020 00:00:00 GMT";

        document.cookie = name + "=" + value +  expire +  ';';
}

  

function PokazUkryj()
{
   var pasek=document.getElementById('pasek');
   var tresc=$('tresc');
   var img= pasek.childNodes[0];
   pasek=pasek.getElementsByTagName('span')[0];

   if (tresc.style.display == 'block' || my_getcookie('hide')==0)
   {
      tresc.style.display='none';
      pasek.innerHTML='Pokaż';
      img.src='exp_minus.gif';
      my_setcookie('hide',1);
   }
   else
   {
      tresc.style.display='block';
      pasek.innerHTML='Schowaj';
      img.src='exp_plus.gif';
      my_setcookie('hide',0);
   }
}

window.onload = function
{
   if(my_getcookie('hide')==1)
   {
      var tresc=$('tresc');
      var pasek=$('pasek');
      var img= pasek.childNodes[0];
      img.src='exp_minus.gif';
      tresc.style.display='none';
      pasek.childNodes[1].innerHTML='Pokaż';
   }
}
-->


tyle że tu na stałe jest wpisane jaki element ma się chowac/pokazywać... musiałbyś to przerobić aby pobierał argument co ma chowac lub pokazywać
Aztech
Póki co ja skorzystałem z rozwiązania http://code.gosu.pl/ z menu w javie wersja 1.3. W JS jestem słaby, ale postaram się coś wydusić z tego Twojego skryptu
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.