Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Zmiana ikony po kliknieciu
Forum PHP.pl > Forum > Przedszkole
nikestylex7
Stworzyłem prosty skrypt który służy mi do menu. Gdy kliknę na plus cyli ikonę + otwiera mi się div i plus zamienia na - lecz gdy do tego chce otworzyc kolejnego diva to zamiast klikać raz żeby go otworzyć muszę kliknąć 2 razy, tak samo z zamknięciem. Gdy otwieram i zamykam tylko jednego diva to działa poprawnie po jednym razie klikam.

kod :

  1. <script type="text/javascript">
  2. <!--
  3. var counter=0;
  4. var plusminus;
  5. function hide(el)
  6. {
  7. if(counter==0)
  8. {
  9. document.getElementById(el).style.display="block";
  10. counter=1;
  11. document.getElementById(el + "_icon").src = "images/minus.png";
  12. }
  13. else
  14. {
  15. document.getElementById(el).style.display="none";
  16. counter=0;
  17. document.getElementById(el + "_icon").src = "images/krzyz.png";
  18. }
  19. }
  20. //-->
  21. </script>
PrinceOfPersia
zapomniałeś o wklejeniu kodu HTML.
nikestylex7
  1. <div id="menulewe">
  2. <div id="menu_lewe">
  3. <dl id="menu0">
  4. <dt id="bialy"><a href="index.php">Strona Główna</a></dt>
  5. <dt id="all"><div onClick="hide('div1')"><div id="menu_click">Moje Zakłady<div id="plus"><img src="images/krzyz.png" id="div1_icon" border="0"></div></div></div></dt>
  6. <div id="div1">
  7. <dd><a href="w_grze.php">- W grze</a></dd>
  8. <dd><a href="historia.php">- Historia</a></dd>
  9. </div>
  10. <dt id="all"><div onClick="hide('div2')"><div id="menu_click">Konto<div id="plus1"><img src="images/krzyz.png" id="div2_icon" border="0"></div></div></div></dt>
  11. <div id="div2">
  12. <dd>- Panel administracyjny</dd>
  13. <dd><a href='admin.php?third'>- Wiadomości</dd>
  14. <dd><a href="dane.php">- Dane Konta</dd></a>
  15. <dd><a href="ustawienia.php?pierwszy=1">- Ustawienia</a></dd>
  16. <dd><a href="kupno.php">- Kupno</a></dd>
  17. <dd><a href="sprzedaz.php">- Sprzedaż</a></dd>
  18. </div>
  19. <dt id="lewe_inne"><a href="wyloguj.php">Wyloguj</a></dt>
  20. </dl>
  21. </div>
-alfred-
Moim zdaniem jest wina w count bo gdy otworzysz jednego diva skrypt zrobi się raz i przypisze cyfrę 1 gdy wywoła się drugi raz musi zrobić 0 i po podwójnym kliku znowu 1 żeby się otworzyło
nikestylex7
Dokładnie. Tylko jak to zmienić żeby skrypt obsługiwał dwa zdarzenia
Thorang Hoog
Nie potrzebujesz żeby zmieniać jakieś liczniki.
Kiedy pracujesz z obiektem to pracuj z nim.

Odnosisz się do stylu to sprawdzaj jaki styl jest obecnie w tym obiekcie ustawiony i odpowiednio go zmieniaj wink.gif

  1.  
  2. function hide(el)
  3. {
  4. n = document.getElementById(el);
  5. if ( n.style.display=="none" )
  6. {
  7. n.style.display="block";
  8. document.getElementById(el + "_icon").src = "images/minus.png";
  9. }
  10. else
  11. {
  12. n.style.display="none";
  13. document.getElementById(el + "_icon").src = "images/krzyz.png";
  14. }
  15. }
nikestylex7
teraz oba divy za 2 kliknięciem . musze kliknąć dwa razy na jeden i dwa razy na drugi, a po tym już działają na jedno kliknięcie poprawnie. nie wiem dlaczego tak jest nie ma countiera. Inne pomysły?

spróbuj to wytestować i zobaczysz ten błąd

?
Thorang Hoog
Znaczy że nie jest dla nich ustalony styl początkowy.

Jeśli wciąż nie zda testu to nie zapisuj jako counter tylko w tablicy
var counter[el]=1 lub 0
nikestylex7
ustawiłem styl początkowy lecz nie do tego diva co trzeba. Dzięki za pomoc już śmiga
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.