Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS][PHP]Kolejny plik oraz kolejna funkcja
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Maxie
Witam,
otóż zaczynam swą zabawę z JavaScriptem. Celem tej "zabawy" jest zrobienie czegoś więcej, więc się za to zabrałem. Ale teraz mam problem. Zrobiłem w PHP ładnie działający menager plików. Wymyśliłem, sobie, że przy każdym pliku (czyli kolejnym "obrocie" pętli), tworzyła się jedna funkcja z numerkiem na końcu, by się nie pomieszały i każdy plik mógł być oddzielnie wyświetlony w odpowiednim divie, po najechaniu na nazwę pliku. Niestety, coś nie tak działało, postanowiłem skrócić kod by zobaczyć gdzie leży przyczyna. Skończyło się na pokazaniu nazwy, lecz problem pozostał. Problem objawia się w ten sposób, że tylko mogę "zobaczyć" ostatni plik po najechaniu na jakikolwiek.

Miejsce wyświetlenia nazwy:
  1. <tr class="view" id="view">
  2.  
  3. </tr>



Zapętlona część odpowiedzialna, za pokazywanie pliku, oraz ten trefny skrypt w JS:
  1.  
  2. if($poke==NULL){
  3. $poke = 0;}else{
  4. $poke = $poke + 1;}
  5.  
  6.  
  7.  
  8. echo "<tr onmouseover=\"Pokaz$poke()\" onmouseout=\"NPokaz$poke()\" class=\"style222\"><td> <img src=\"images/$ipk.png\"> " . $vfile . "</td><td class=\"style24\">.$img &nbsp;&nbsp; $w $mb</td><td class=\"style23\"> $qwerty </a></td></tr>";
  9.  
  10. echo"<script language=\"javascript\" type=\"text/javascript\">
  11.  
  12. function Pokaz$poke() {
  13. document.getElementById(\"view\").innerHTML = \"$vfile\";
  14. document.getElementById(\"view\").className = \"pokaz\";
  15.  
  16. }
  17.  
  18. function NPokaz$poke() {
  19. document.getElementById(\"view\").innerHTML = \"\";
  20. document.getElementById(\"view\").className = \" view\";
  21.  
  22. }
  23. </script>";
  24.  


I teraz moje pytanie, gdzie leży przyczyna?
mortus
W HTML możesz mieć tylko jeden element o określonym id, jeśli będziesz miał ich więcej, to metoda getElementById() wybierze ostatni taki element. Generowanie kilku różnych funkcji różniących się jedynie liczbą na końcu jest bez sensu i przeczy jednej z podstawowych zasad programowania - regule DRY (nie powtarzaj się). Tymczasem można by stworzyć tylko jedną funkcję o nazwie Pokaz, a identyfikator lub numer elementu do wyświetlenia przekazywać jako argument tej funkcji.
krowal
Wszystko to co piszesz da się zrobić w css bez potrzeby używania js z pomocą pseudoklasy :hover. Poza tym całkowicie zgadzam się z mortus'em. Powinna być od tego jedna funkcja przyjmująca jako parametr id zmienianego wiersza/obrazka.
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.