Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] onChange i <select>
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Bart Henry
Witam. Natrafiłem na problem, który rozwiązałem, lecz nie rozumiem skąd jego obecność. Chciałbym wiedzieć gdzie popełniłem błąd, aby w przyszłości uniknąć jego wystąpienia. Dlatego tu przybyłem.

Chciałem zrobić pole <select>, w którym do wyboru byłoby 'pl' i 'en', które odpowiadają za język obecnie wyświetlanych wpisów. Domyślnie jedna z tych opcji jest wybrana. Ma to działać tak, że po wybraniu drugiej opcji z rozwijanej listy, automatycznie ładują się wpisy w tym drugim języku. Zastosowałem zdarzenie onChange.

Kod selecta:
  1. <select name="langselect" id="langselect" >
  2. <option value="pl" selected>pl</option>
  3. <option value="en">en</option>

Kod oskryptowania:
[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2. var langselect = document.getElementById('langselect');
  3. langselect.onChange=reload_page(langselect.selectedIndex);
  4.  
  5. function reload_page(index){
  6. (...)
  7. }
  8. </script>
[JAVASCRIPT] pobierz, plaintext

Resztę kodu pominąłem, ponieważ nie ma znaczenia. Takie coś nie działa. Funkcja reload_page uruchamia się raz i to przy załadowaniu strony. Potem zmiana języka w <select> nie daje żadnych rezultatów, nic się nie dzieje.

Działa za to, gdy usunę linijkę:
Kod
langselect.onChange=reload_page(langselect.selectedIndex);

i wrzucę owe onChange do kodu html w <select>, aby wygladało tak:
  1. <select name="langselect" id="langselect" onChange="reload_page(langselect.selectedIndex)">
  2. <option value="pl" selected>pl</option>
  3. <option value="en">en</option>

Jaki jest błąd w tym moim pierwszym rozumowaniu? Czemu to nie działało?
nospor
Bo to:
reload_page(langselect.selectedIndex)
jest niczym innym jak wykonaniem od razu funkcji reload_page.
Bart Henry
Faktycznie. Twój post dał mi do myślenia. Po zmianie na:
Kod
langselect.onchange = function(){reload_page(langselect.selectedIndex)}

jest okej. Spojrzałem do innych moich skryptów i właśnie tak robiłem wcześniej, a tym razem po prostu o tym zapomniałem. Dzięki. Teraz z pewnością będę o tym pamiętał w przyszłoś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.