Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jedna klasa do kilku elementów, da się tak?
MadMark
post 24.12.2010, 20:40:39
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

Ostrzeżenie: (0%)
-----


Witam,
napisałem kod:

  1. function openClose(id)
  2. {
  3. if(document.getElementById)
  4. {
  5. element = document.getElementById(id);
  6. }
  7. else if(document.all)
  8. {
  9. element = document.all[id];
  10. }
  11. else return;
  12.  
  13. if(element.style)
  14. {
  15. if(element.style.display == 'block' )
  16. {
  17. element.style.display = 'none';
  18. document.getElementById(id+'_clicked').style.display = 'block';
  19. }
  20. else
  21. {
  22. element.style.display = 'block';
  23. document.getElementById(id+'_clicked').style.display = 'none';
  24. if(getElementsById(id).length > 1)
  25. {
  26. element.style.margin = "0 "+(70*getElementsById(id).length)+"0 0";
  27. }
  28. }
  29. }
  30. }
  31. #menus
  32. {
  33. -webkit-border-radius: 10px;
  34. -moz-border-radius: 10px;
  35. border-radius: 10px;
  36. background-color: orange;
  37. padding: 1px;
  38. position: absolute;
  39. left: 35%;
  40. /*margin-left: -175px;*/
  41. z-index: 101;
  42. width: 30%;
  43. text-align: center;
  44. display: none;
  45. margin-top: 50px;
  46. }
  47. #menus .menuss
  48. {
  49. -webkit-border-radius: 10px;
  50. -moz-border-radius: 10px;
  51. border-radius: 10px;
  52. background-color: black;
  53. color: silver;
  54. padding: 10px;
  55. height: 100px;
  56. }
  57. #menusss
  58. {
  59. -webkit-border-radius: 10px;
  60. -moz-border-radius: 10px;
  61. border-radius: 10px;
  62. background-color: orange;
  63. padding: 1px;
  64. position: absolute;
  65. left: 35%;
  66. /*margin-left: -175px;*/
  67. z-index: 101;
  68. width: 30%;
  69. text-align: center;
  70. display: none;
  71. margin-top: 50px;
  72. }
  73. #menusss .menuss
  74. {
  75. -webkit-border-radius: 10px;
  76. -moz-border-radius: 10px;
  77. border-radius: 10px;
  78. background-color: black;
  79. color: silver;
  80. padding: 10px;
  81. height: 100px;
  82. }
  83. <div id="menus"><div class="menuss">To jest moje znikajace okienko. (1)</div></div>
  84. <div id="menusss"><div class="menuss">To jest moje znikajace okienko. (2)</div></div>
  85.  
  86. <ul align="left" class="topnav">
  87. <li style="display:block;"><a href="java script:void(0); openClose('menus');" onClick="setTimeout('openClose(\'menus\')',5000);" id="menus_clicked">Pokaz 1</a></li>
  88. <li style="display:block;"><a href="java script:void(0); openClose('menusss');" onClick="setTimeout('openClose(\'menusss\')',5000);" id="menusss_clicked">Pokaz 2</a></li>
  89. </ul>


I teraz mam kilka problemów.
  1. Dla dwóch elementów mogłem sobie napisac klasę, ale jak to przerobić, aby klasa była jedna dla wszystkich? Bo jak będę mieć 20 takich to sobie nie dopisze 20 klas ;/
  2. Jak poprawnie zrobić, aby "okienka" pokazywały się jedno pod drugim? (próbowałem z 70*getElementsByTagName(id).length ale to nie działa) - teraz są jedno nad drugim i nawet nie wiem od czego zależy, które będzie na widoku... LUB jak zrobić, aby kolejny tekst po kliknięciu w "coś" następnego dodawał się do diva ?


Ktoś mi to wyjaśni?
Z góry dziękuję.

exclamation.gif! PS > przy fragmencie <a href="java script:void(0); nie ma spacji i nie powinno jej byc w "javascript" ale forum cenzuruje...

Ten post edytował MadMark 24.12.2010, 21:31:38
Go to the top of the page
+Quote Post
shpyo
post 7.01.2011, 15:55:09
Post #2





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Musisz dynamicznie przypisywać akcje klikalnym elementom i przekazywać im odpowiednie parametry:
Kod
function openClose(id)
{
    if(document.getElementById)
        element = document.getElementById(id);
    else if(document.all)
        element = document.all[id];
    else return;

    if(element.style) {
        if(element.style.display == 'block' ) {
            element.style.display = 'none';
            document.getElementById(id+'_clicked').style.display = 'block';
        }
        else {
            element.style.display = 'block';
            document.getElementById(id+'_clicked').style.display = 'none';
        }
    }
}

//pobieramy wszystkie <a> na które będziemy klikać
var a = document.getElementsByClassName('ak');
for( var i=0,al=a.length; i<al; i++ ) {
    //dla każdego <a> przypisujemy kliknięcie
    a[i].onclick = function() {
        var id = this.getAttribute("id").split('_')[0]; //nasze ID
        openClose( id );
        setTimeout('openClose(\''+ id +'\')',5000);
    }
}


Wtedy LI ma postać:
  1. <li style="display:block;"><a class="ak" href="java script:void(0);" id="menus_clicked">Pokaz 1</a></li>
  2. <li style="display:block;"><a class="ak" href="java script:void(0);" id="menusss_clicked">Pokaz 2</a></li>


Ten post edytował shpyo 7.01.2011, 15:56:02


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 06:14