Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][CSS][PHP]ukrywanie div - ów
Forum PHP.pl > Forum > Przedszkole
Maciek1705
Witam serdecznie forumowicze mam małe pytanie i prośbę o pomoc w pewnym problemie. Mam taki kod:

  1. <div id='menu'>
  2. <li class='li_menu'><a>Pokoje</a>
  3. <ul class='menu'>
  4. <li id='P1'>P1</li>
  5. <li id='P2'>P2</li>
  6. <li id='P2'>P2</li>
  7. <li id='P4'>P4</li>
  8. </ul>
  9. </li>
  10. </div>
  11.  
  12. <div id='0'>
  13. opis itp.
  14. </div>
  15.  
  16. <div id='1'>
  17. treść 1 diva
  18. </div>
  19.  
  20. <div id='2'>
  21. treść 2 diva
  22. </div>
  23.  
  24. <div id='3'>
  25. treść 3 diva
  26. </div>
  27.  
  28. <div id='4'>
  29. treść 4 diva
  30. </div>
  31.  
  32. ");


Chciałem uzyskać taki efekt żeby na jednej stronie było kilka divóv ale tylko 1 widoczny, tz Przy ładowaniu strony ma być zawsze widoczny div z id=0 reszta ma być ukryta, lecz np jeśli z listy wyboru kliknę na P1 to chce żeby div o id=0 się ukrył a był aktywny div z id=1 i tak samo dla pozostałych P2, P3 P4 żeby odpowiednio się pokazywały div2, div3, div4. Wszystkie przykłady jakie widziałem były do htmla nie spotkałem się z przykładem do php. Jeśli ktoś potrafi napisać prostą funkcję co by to robiła to proszę o pomoc bo sam nie mogę tego ogarnąć
wookieb
Bo tego w php się nie robi tylko w javascript. Jest sporo takich skryptów. jquery tabs m.in (jak sobie lekko dopasujesz)
Maciek1705
Masz rację to trzeba zrobić w java script patrzyłem na jquerry co mi podałeś ale to za wysokie progi faktycznie efekt jest niezły płynny itp, ale poziom trudności jest spory. Widziałem kiedyś na przykładzie htmla jak to się robiło za pomocą css i atrybutami display to była prosta funkcja z 8 linijek w java script ale byłe głupi i to wrzuciłem bo mógłbym teraz wrzucić i pokazać co i jak
Void
Napisz sobie funkcję js przyjmującą jako parametr ID diva, który ma zostać wyświetlony. Następnie przeleć pętlą po wszystkich pozostałych divach (tu przydałoby się np. przechowywać w jakiejś zmiennej "n" ile jest tych divów i pętlą for iterować od 0 do n-1), aby sprawdzić który ma ustawioną właściwość display na "block" i ustawić ją na "none" (Document.getElementById(n).display='none'). A diva, którego id podano w argumencie funkcji pokazujesz po prostu za pomocą getElementById i ustawiasz display na block.
Skie
ukrywanie elementu za pomocą atrybutów CSS:

Niewidoczny:
Kod
document.getElementById(jakies_id).style.display = "none";


Widoczny
Kod
document.getElementById(jakies_id).style.display = "block"; // ew. inline

kefirek
  1. <html>
  2. <head>
  3. <script src="http://code.jquery.com/jquery-latest.js"></script>
  4. <script>
  5. $(document).ready(function() {
  6. $('#start').show('normal');
  7. $('.toggle').click(function(){
  8. $('.toggle').hide();
  9. $(this).next('div').show();
  10. });
  11. });
  12. </script>
  13. </head>
  14. <body>
  15. <?php
  16. echo "<div id='start' class='toggle' style='display:none'>test</div>
  17. <div class='toggle' style='display:none'>test1</div>
  18. <div class='toggle' style='display:none'>test2</div>
  19. <div class='toggle' style='display:none'>test3</div>";
  20. ?>
  21. </body>
  22. </html>
Maciek1705
nie uwierzcie znalazłem przykład o którym pisałem już go wrzucam:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
  2. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  3. <title> [tytuł strony] </title>
  4.  
  5. <script type="text/javascript">
  6. function pokaz(el) {
  7. var i=1
  8. for(var i=1; i<8; i++) {
  9. document.getElementById('div'+i).style.display = "none";
  10. }
  11. document.getElementById(el).style.display = "block";
  12. }
  13. </script>
  14.  
  15.  
  16. <style type="text/css">
  17. #div1 {
  18. margin-top: 20px;
  19. margin-left:20px;
  20. width: 500px;
  21. height: 500px;
  22. background-color: red;
  23. float:left;
  24. display: block;
  25. }
  26.  
  27. #div2,#div3,#div4,#div5,#div6,#div7 {
  28. margin-top: 20px;
  29. margin-left:20px;
  30. width: 500px;
  31. height: 500px;
  32. background-color: green;
  33. float:left;
  34. display: none;
  35. }
  36. </style>
  37.  
  38. </head>
  39.  
  40. <div id="div1">Main
  41. </div>
  42. <div id="div2">Logowanie
  43. </div>
  44. <div id="div3">Rejestracja
  45. </div>
  46. <div id="div4">FAQ
  47. </div>
  48. <div id="div5">Regulamin
  49. </div>
  50. <div id="div6">Autor
  51. </div>
  52. <div id="div7">Polecamy
  53. </div>
  54.  
  55. <div id="menu">
  56. <a onclick="pokaz('div1')">Strona główna</a><br />
  57. <a onclick="pokaz('div2')">Logowanie</a><br />
  58. <a onclick="pokaz('div3')">Rejestracja</a><br />
  59. <a onclick="pokaz('div4')">FAQ</a><br />
  60. <a onclick="pokaz('div5')">Regulamin</a><br />
  61. <a onclick="pokaz('div6')">Autor</a><br />
  62. <a onclick="pokaz('div7')">Polecamy</a><br />
  63. </div>
  64.  
  65. </body>
  66. </html>


Właśnie o to mi chodzi o takie coś tylko żeby to było w php a jak przerabiam dokument na php to problem pojawia się na "div id=menu" tam są zdarzenia onclick i mają najpierw cudzysłów " " a później apostrofy ' ' i jak ja tam daje print lub echo to pojawia się tam zgrzyt bo onclick bez cudzysłowu nie zadziała a z cudzysłowem jest błąd bo koliduje z echo lub printem i w właśnie dlatego chciałem się zapytać jak to rozkminić żeby poszło
jasin
A próbowałeś dać np:
  1. $html = '<a onclick="pokaz(\'div1\')">Strona główna</a><br />';
  2. echo $html;

lub jesli wolisz używać "":
  1. $html = "<a onclick=\"pokaz('div1')\">Strona główna</a><br />";

Maciek1705
dzięki jasin zadziałało jeszcze raz wielkie dzięki:-)
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.