Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Pokazywanie/ukrywanie elementu
Forum PHP.pl > Forum > Przedszkole
!*!
Może mi ktoś wyjaśnić dlaczego ten motyw nie działa:

  1. <div id="bodydiv">
  2. <aside>aside</aside>
  3. <nav>nav</nav>
  4. </div>
  5. <div id="info">info</div>


[JAVASCRIPT] pobierz, plaintext
  1. function showHide(){
  2. if(document.getElementById("bodydiv").getElementsByTagName("nav")[0].style.display == 'block'){
  3. document.getElementById("info").innerHTML = 'tak';
  4. }else{
  5. document.getElementById("info").innerHTML = 'nie';
  6. }
  7. }
[JAVASCRIPT] pobierz, plaintext


Za każdym razem pokazuje się "nie", dlaczego? W css mam nadany atrybut "display:block" dla tych elementów.
flashdev
Kod
function showHide(){
if(document.getElementById("bodydiv").getElementsByTagName("nav")[0].style.display == 'block'){
document.getElementById("info").innerHTML = 'tak';
document.getElementById("bodydiv").getElementsByTagName("nav")[0].style.display == 'none';
}else{
document.getElementById("info").innerHTML = 'nie';
document.getElementById("bodydiv").getElementsByTagName("nav")[0].style.display == 'block'
}
}


Zgaduję, że brakuje tych dwóch linijek.
!*!
Nie zgadłeś. Nadal wyświetla się "nie". Chce po prostu sprawdzić jaką nav ma wartość.
flashdev
Skrypt działa jak należy. Wyświetla się 'nie', ponieważ <nav> ma stale ustwiony widok 'block'.
Echonik
Z ciekawości sprawdziłem ten problem i...
  1. <style type="text/css">
  2. aside {display: block;}
  3.  
  4. <script language="javascript">
  5. function show(tagName)
  6. {
  7. alert(tagName + ".style.display=" +document.getElementsByTagName(tagName)[0].style.display);
  8. }
  9. </head>
  10.  
  11. <div>
  12. <aside>tekst aside</aside>
  13. <button onclick="show('aside')">Get property aside</button>
  14. </div>
  15.  
  16. <div>
  17. <nav style="display: block;"> tekst nav</nav>
  18. <button onclick="show('nav')">Get property nav</button>
  19. </div>
  20. </body>
  21. </html>


.. u mnie jest tak, że po kliknięciu na:
- "Get property aside" jest pusta wartość,
- "Get property nav" wartość jako block
!*!
flashdev - To w tym Twoim przykładzie powinien się schować, i wyświetlić "nie", jak kliknę raz jeszcze, to powinien się wyświetlić i pokazać "tak", a tak nie jest.

Edycja:
Ok, już wiem gdzie był błąd.

[JAVASCRIPT] pobierz, plaintext
  1. function showHide(){
  2. if(document.getElementById("bodydiv").getElementsByTagName("aside")[0].style.display == 'block'){
  3. document.getElementById("con").innerHTML = 'tak';
  4. document.getElementById("bodydiv").getElementsByTagName("aside")[0].style.display = 'none';
  5. }else{
  6. document.getElementById("con").innerHTML = 'nie';
  7. document.getElementById("bodydiv").getElementsByTagName("aside")[0].style.display = 'block'
  8. }
  9. }
[JAVASCRIPT] pobierz, plaintext


Chodziło o znak porównania "==" i określenia wartości "=".
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.