Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] onChange i <select>, dziwny problem
Bart Henry
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 13.09.2012

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bo to:
reload_page(langselect.selectedIndex)
jest niczym innym jak wykonaniem od razu funkcji reload_page.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bart Henry
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 13.09.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 10:40