Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ukrywanie warstwy
matid
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


Witam, mam następujący problem. Mam taki kod HTML:
  1. <!--QuoteBegin--><div class='quotetop'><a href="javascript:my_show_div(my_getbyid('spoiler'));">SPOILER</a></div>
  2. <div id="spoiler" class='quotemain' style='display: none'>
  3. <!--QuoteEBegin-->{content}<!--QuoteEnd--></div><!--QuoteEEnd-->

Ten kod ma za zadanie po kliknięciu na link SPOILER pokazywać warstwę 'spoiler'.
Ale teraz przejdźmy do problemu: Jak zmienić ten kod, aby przy większej ilości powtórzeń tego kodu każdy napis spoiler odpowiadał za odkrywanie tylko tej warstwy, która jest pod nim. Odpada nazywanie poszczególnych warstw w ten sposób: spoiler_1, spoiler_2, bo kod jest wstawiany automatycznie. Jedyna możliwość to robienie tego dynamicznie za pomocą JS, ale nie mam koncepcji jak tego dokonać.
Go to the top of the page
+Quote Post
bregovic
post
Post #2





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


AFAIK jeśli nie możesz dać warstwom różnych id, to nie przejdzie. Chyba żebyś używając DOM znalazł następny div, i go pokazał - ale to jest już wyższa szkoła myślenia...
Go to the top of the page
+Quote Post
Paul
post
Post #3





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


  1. <script type="text/javascript">
  2. function my_show_div(obj) {
  3. obj = document.getElementById(obj);
  4. obj.style.display == 'none' ? obj.style.display = '' : obj.style.display = 'none';
  5. }
  6. function my_divs_init(ajdi) {
  7. objs = document.getElementsByTagName('div');
  8.  
  9. for(i = 0, i2 = 0; i < objs.length; i++) {
  10. if(objs[ i ].id == ajdi) {
  11. objs[ i ].id = ajdi + i2.toString();
  12. i2++;
  13. }
  14. }
  15.  
  16. objs = document.getElementsByTagName('a');
  17. for(i = 0, i2 = 0; i < objs.length; i++) {
  18. if(unescape(objs[ i ].href) == "javascript: my_show_div('" + ajdi + "');") {
  19. objs[ i ].href = "javascript: my_show_div('" + ajdi + i2.toString() + "')";
  20. i2++;
  21. }
  22. }
  23. }
  24. </head>
  25. <body onload="my_divs_init('spoiler');">
  26.  
  27. <div class='quotetop'>
  28. <a href="javascript: my_show_div('spoiler');">SPOILER</a>
  29. </div>
  30.  
  31. <div id="spoiler" class='quotemain' style='display: none'>
  32. 1
  33. </div>
  34.  
  35.  
  36. <div class='quotetop'>
  37. <a href="javascript: my_show_div('spoiler');">SPOILER</a>
  38. </div>
  39.  
  40. <div id="spoiler" class='quotemain' style='display: none'>
  41. 2
  42. </div>
  43.  
  44. <div class='quotetop'>
  45. <a href="javascript: my_show_div('spoiler');">SPOILER</a>
  46. </div>
  47.  
  48. <div id="spoiler" class='quotemain' style='display: none'>
  49. 3
  50. </div>
  51. </body>
  52. </html>
Go to the top of the page
+Quote Post
gaza
post
Post #4





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 22.06.2003

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


Bardzo mi sie przydalo to rozwiazanie.
Mam jednak jedno pytanie.

Nie bardzo znam jeszcze JS , a chcialbym w zaleznosci od tego czy ukrywam , czy pokazuje, zmieniac nazwe linku.

Pozdrawiam
Go to the top of the page
+Quote Post
Aztech
post
Post #5





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Mam dodatkowe pytanie, jak zmodyfikowac ten skrypt tak na samym poczatku
a) newsy byly zwiniete
(IMG:http://forum.php.pl/style_emoticons/default/cool.gif) jesli roziwne jeden news to wszystkie pozostale sie zwina?

ad a) ten problem rozwiazalem tak ale nei wiem jak se poradzic z drugim
  1. function my_show_div(obj) {
  2. obj = document.getElementById(obj);
  3. obj.style.display == '' ? obj.style.display = 'none' : obj.style.display = '';
  4. }
  5.  
  6. function my_divs_init(ajdi) {
  7. objs = document.getElementsByTagName('div');
  8.  
  9. for(i = 0, i2 = 0; i < objs.length; i++) {
  10. if(objs[ i ].id == ajdi) {
  11. objs[ i ].id = ajdi + i2.toString();
  12. i2++;
  13. objs[i].style.display = 'none';
  14. }
  15. }
  16. objs = document.getElementsByTagName('a');
  17. for(i = 0, i2 = 0; i < objs.length; i++) {
  18. if(unescape(objs[ i ].href) == "javascript: my_show_div('" + ajdi + "');") {
  19. objs[ i ].href = "javascript: my_show_div('" + ajdi + i2.toString() + "')";
  20. i2++;
  21. }
  22. }
  23. }
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.09.2025 - 04:35