Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ukrywanie warstwy
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
matid
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ć.
bregovic
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...
Paul
  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>
gaza
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
Aztech
Mam dodatkowe pytanie, jak zmodyfikowac ten skrypt tak na samym poczatku
a) newsy byly zwiniete
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. }
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.