Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] ukrywanie "SearchBox" i/lub "link"
Forum PHP.pl > Forum > Przedszkole
czezz
Witam,
wiem, że za pomocą JavaScript można ukryć niektóre elementy strony.
Czy mogę poprosić kogoś o przykład na poniższym kodzie ?

Chciałbym ukryć "search box" i/lub link: "Advanced search"
Próbowałem wykonać coś takiego:

document.getElementsByClassName("searchContainer").style.display = 'none' oraz document.getElementById("searchContainer").style.display = 'none'
W obu przypadkach nic to jednak nie pomagało.
Być może funkcja jest OK, tylko trzeba coś jeszcze dodać ?

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2.  
  3. </head>
  4. <form method="get" action="arenden_sok.asp?boid=1" target="main" name="search" ID="Form1" onsubmit="java script:DispActionIcon(1);">
  5. <input type="hidden" name="boid" value="1" ID="Hidden1">
  6. <table class="searchContainer" width="100%">
  7. <tr>
  8. <td></td>
  9. <td><input type="search" placeholder="Search case" name="sokord" ID="Text1" style="width:120px;" class="input"></td>
  10. </tr>
  11. <table class="meny">
  12.  
  13. <tr>
  14. <td><a class="img" href="arenden_meny.asp?boid=1&avsok=0" ><img src="/common/images/1.gif" border="0"></a></td>
  15. <td><a href="arenden_meny.asp?boid=1&avsok=0" onclick="parent.frames.main.location='/admin/arenden_avsok.asp?boid=1'">Advanced search</a></td>
  16. </tr>
  17.  
  18. <tr>
  19. <td><img src="/common/images/dot.gif" border="0"></td>
  20. <td><a href="/common/arenden.asp?boid=1" target="main">View</a></td>
  21. </tr>
  22. <tr>
  23. <td><img src="/common/images/dot.gif" border="0"></td>
  24. <td><a href="arenden_installningar.asp?boid=1" target="main">Options</a></td>
  25. </tr>
  26.  
  27. </form>
  28. </body>
  29. </html>
Comandeer
Kod
document.getElementsByClassName("searchContainer")

Jak sama nazwa funkcji mówi, zwracana są elementy, a więc obiekt pseudotablicowy. Zatem możesz pobrać 1. element z niego i dla niego przypisać style:
Kod
document.getElementsByClassName("searchContainer")[0].style.display = 'none';

W tym wypadku jednak IMO lepiej się sprawdzi document.querySelector:
Kod
document.querySelector(".searchContainer").style.display = 'none';


Osobiście jednak wydaje mi się, że zamiast bezpośrednio operować na stylach, to lepiej jest operować na klasach elementu (a więc na jego stanie).
czezz
Bardzo dziękuję za odpowiedź.
Obia podane przykłady działają świetnie na podanym przykładowym kodzie html.

Jeśli jednak, spróbuję wykonać tą samą operację na pełnym kodzie na moim serwerze, używając w Firefox: F12 > console >

  1. document.getElementsByClassName("searchContainer")[0].style.display = 'none';
  2. TypeError: document.getElementsByClassName(...)[0] is undefined


  1. document.querySelector(".searchContainer").style.display = 'none';
  2. TypeError: document.querySelector(...) is null


W pierwszym przypadku coś jest niezdefiniowane a w drugim ma wartość zerową. O czym zapomniałem ?
Comandeer
Odpalasz to w head? Jeśli tak, to musisz to odpalić przy DOMContentLoaded: https://developer.mozilla.org/en-US/docs/We...OMContentLoaded

Taki błąd się odpala jeśli chcemy użyć kodu na elementach, które jeszcze nie istnieją.
czezz
Nie.

Do testu użyłem metody Firefox: F12 > Console > document.getElementsByClassName("searchContainer")[0].style.display = 'none'; - to zadziałało.
Jeśli dodam do kodu HTML, wszystko jedno gdzie poniżse to nie działa:
  1. <script src="fflimit.js" language="javascript" type="text/javascript"></script>

lub
  1. <script>document.getElementsByClassName("searchContainer")[0].style.display = 'none';</script>
Comandeer
Ah, Ty to wykonujesz w konsoli i tam Ci nie znajduje elementów? Dziwne. Ale chyba wiem na czym problem polega: ta wyszukiwarka jest w jakiejś ramce?

A jak dodasz to na końcu body też nie działa?
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.