Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: show <div> onclick
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Black-Berry
Napisałem skrypt który pokazuje mi ukryte tagi <div> po kliknięciu na ikonkę. Działa to w ten sposób, że każdy div ma przypisane id ( np id="div_1" ). Po kliknięciu na ikonkę powiązaną z tym divem za pomocą Javascript zmieniam display:none na display:block; - Wtedy ukryty div się pokazuje.

Problem jest teraz taki, że chciałbym po kliknięciu w dowolny element strony ukryć na nowo ten pokazany element. Wie ktoś moze jak sie za to zabrać questionmark.gif
mike
Cytat(Black-Berry @ 11.06.2007, 11:05:23 ) *
Po kliknięciu na ikonkę powiązaną z tym divem za pomocą Javascript zmieniam display:none na display:block; - Wtedy ukryty div się pokazuje.
No chyba logiczne jest że teraz jak zmienisz z block na none to element zostanie ukryty.

Samodzielności trochę.
sticker
ano nie ma problemu jak podepniesz funkcje js pod każdy link Może i dałoby sie to prościej zrobić jakbys pokazał dom dokumentu
Black-Berry
Cytat(mike @ 11.06.2007, 10:16:59 ) *
No chyba logiczne jest że teraz jak zmienisz z block na none to element zostanie ukryty.

Samodzielności trochę.


smile.gif pani admin jak zwykle gromowładna. smile.gif Jasne że to jest logiczne i nie ma problemu jeśli chodzi o jeden element który wiem jakie ma id. Ale Chodzi o to że mam tych div'ów wiele i chciałbym żeby ukrył się dowolny bo inaczej musiałbym pisac funkcję która po kliknięciu ukrywa w pętli wszystkie divy. Dodatkowo musioałbym zdarzenie wywołania tej funkcji podpiąc do każdego elementu strony bo chcę zeby ten wyskakujący panelik ukrył się po kliknięciu w obszar poza nim. A to już problem.
ARJ
chodzi ci o coś takiego?
Kod
function Pokaz(co) {
    if (document.getElementById(co).style.display == "block"){
        document.getElementById(co).style.display = "none";
    }else{
        document.getElementById(co).style.display = "block";
    }
}
Black-Berry
@ARJ

To jest właśnie mniej więcej skrypt który teraz używam. Niestety musze przekazywac nim konkretne id. A jak ukryc pokazany div po kliknięciu w obszar poza nim ? Możnaby chyba zapamiętac zmienną która określa który div jest właczony... To załatwiłoby sprawę z petlą. Ale w jakim zdarzeniu, jakiego elementu podpiąć funkcję ukrywającą? Czy jeśli ustawię ją w tagu <body> to załatwi sprawę ?
ARJ
użycie tamtego kodu jest proste. dodajesz np. do innego diva:
Kod
onclick="Pokaz('ukrytyDiv')"

jako parametr do funkcji Pokaz, przekazujesz id diva którego chcesz ukryć/pokazać. czy on ma być widoczny czy nie na samym początku to już ustawiasz w css.
Black-Berry
@ARJ

Tak Wiem o co biega. Teraz tylko mam problem jak wywołać ta funkcję po kliknięciu w inny obszar niż pokazany div. Chce zrobić panelik który będzie się pokazywał po naciśnięciu ikonki a ukrywł jeśli uzytkownik zdecyduje że niepotrzebnie go otwarł i kliknie w dowolny obszar strony.
abc667
takie coś wymyśliłem, pod ff działa, pod operą nie sprawdzałem, dla ie trzeba jeszcze podopisywać gdzieniegdzie e no i ładnie to sobie w opakować w funkcje itd

  1. <title>...</title>
  2. <script type="text/javascript">
  3. var now = false;
  4.  
  5. function show(id, event)
  6. {
  7. hide();
  8. document.getElementById(id).style.display = 'block';
  9. now = id;
  10. event.stopPropagation();
  11. }
  12.  
  13. var tag;
  14.  
  15. function hide()
  16. {
  17. if(now)
  18. {
  19. document.getElementById(now).style.display = 'none';
  20. }
  21. }
  22. </head>
  23. <body onclick="hide();">
  24. <div onclick="event.stopPropagation();" id="jeden" style="width: 50%; height: 50%; border: 1px solid black; display: none;">fdf1</div>
  25. <div onclick="event.stopPropagation();" id="dwa" style="width: 50%; height: 50%; border: 1px solid black; display: none;">fdf2</div>
  26. <div onclick="event.stopPropagation();" id="trzy" style="width: 50%; height: 50%; border: 1px solid black; display: none;">fdf33</div>
  27.  
  28. <br />
  29. <a href="#null" onclick="show('jeden', event);">jeden</a><br />
  30. <a href="#null" onclick="show('dwa', event);">dwa</a><br />
  31. <a href="#null" onclick="show('trzy', event);">trzy</a><br />
  32. </body>
  33. </html>
Black-Berry
@abc667 good job

Super - teraz będzie można zrobić paneliki takie jakie mają na gmailu smile.gif Ale tak jak napisałeś coś jest nie tak w IE. Wiesz może jak to należy zmodyfikować aby działało w IE. Moze chociaż jakiś link do artykułu... (dopiero zaczynam z JS i nie znam tych różnic pomiędy ff i ie )
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.