Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ciekawy problem dotyczący zmiennych?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
karlkar
Witam mam na stronie 3 selecty(później pewnie więcej) i chciałbym, aby po wybraniu opcji w 1 selekcie wyświetlały się nowe pozycje w 2, po wybraniu opcji z drugiego w trzecim i.t.d. Przygotowałem sobie specjalny kodzik w 2 wersjach. 1 wersja obsługuje to tak, że każdy select wywołuje swoją funkcję, lecz skoro ma tych selectów być więcej doszedłem do wniosku że lepiej, aby było to obsługiwane prez 1 funkcję. Zatem powstał plik w drugiej wersji. Pozwolę sobie zamieścić oba kody i adresy do nich, abyście przetestowali ich działanie.

działająca jak powinna(specjalnie nie jest jeszcze dopracowana, także spokojnie tongue.gif)
  1. <?php
  2. <html>
  3. <head>
  4. <script language="JavaScript" type="text/javascript">
  5.  
  6. function updateForm() 
  7. {
  8. var len=document.formularz.miesiac.length;
  9. for(i=0; i < len; i++)
  10.  {
  11.  if (document.formularz.miesiac.options[i].selected == true) 
  12. {
  13.  document.formularz.tydzien.options[i] = new Option('Teksciorek',i);
  14. }
  15.  }
  16.  }
  17.  
  18.  
  19. function updateForm1() 
  20. {
  21. var len=document.formularz.tydzien.length;
  22. for(i=0; i < len; i++)
  23.  {
  24.  if (document.formularz.tydzien.options[i].selected == true) 
  25. {
  26.  document.formularz.dzien.options[i] = new Option('Tekscior',i);
  27. }
  28.  }
  29.  }
  30. </script>
  31. </head>
  32.  
  33. <body>
  34.  
  35.  
  36.  
  37. <form name='formularz' action='nowy.php' method='POST'>
  38.  
  39. <select size='6' name='miesiac' onChange="updateForm(); return true;">
  40. <option value='1'>element 1</option> 
  41. <option value='2'>element 2</option> 
  42. <option value='3'>element 3</option> 
  43. <option value='4'>element 4</option>
  44. </select>
  45.  
  46. <select size='6' name='tydzien' onChange="updateForm1(); return true;">
  47. </select>
  48.  
  49. <select size='6' name='dzien'>
  50. </select>
  51.  
  52. </form>
  53. </body>
  54. </html>
  55. ?>


A teraz drugi kodzik, który już nie chce działać jak należy:
  1. <?php
  2. <html>
  3. <head>
  4. <script language="JavaScript" type="text/javascript">
  5.  
  6. function updateForm(od,cel) 
  7. {
  8. var len=od.length;
  9. for(i=0; i < len; i++)
  10.  {
  11.  if (od.options[i].selected == true) 
  12. {
  13.  cel.options[i] = new Option('Teksciorek',i);
  14. }
  15.  }
  16.  }
  17. </script>
  18. </head>
  19.  
  20. <body>
  21.  
  22.  
  23.  
  24. <form name='formularz' action='nowy.php' method='POST'>
  25.  
  26. <select size='6' name='miesiac' onChange="updateForm(this,'tydzien'); return true;">
  27. <option value='1'>element 1</option> 
  28. <option value='2'>element 2</option> 
  29. <option value='3'>element 3</option> 
  30. <option value='4'>element 4</option>
  31. </select>
  32.  
  33. <select size='6' name='tydzien' onChange="updateForm(this,'dzien'); return true;">
  34. </select>
  35.  
  36. <select size='6' name='dzien'>
  37. </select>
  38.  
  39. </form>
  40.  
  41. </body>
  42. </html>
  43. ?>


w tym pliku, w którym nie działa nie ma różnicy pomiędzy wpisaniem
onChange="updateForm(this,'dzien'); return true;">
czy też
onChange="updateForm(this,'document.formularz.dzien'); return true;">

Proszę o pomoc winksmiley.jpg Pozdrawiam winksmiley.jpg
nospor
no bo nie:'document.formularz.dzien'
a: document.formularz.dzien
Dajac ciapki mowisz ze to tekst, a przeciez ty masz dac pole a nie tekst.
A najlepiej nadaj polom id i przekazuje je tak: document.getElementById('idpola')
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.