Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie wartości z selectów + funkcja switch
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kra1986
Poradźcie mi proszę w którym momencie popełniłem błąd, chcę aby po zmianie selecta uaktualniła się funkcja show() zawierająca instrukcję switch - w zależności od wyboru z listy rozwijalnej, różne komunikaty.

Kod
<html>
<head>
</head>
<body>

<form action="ship.php" method="post" onChange="show()">
<select name="country">
    <option value="NN">--Wybierz--</option>
    <option value="AT">Austria</option>
    <option value="BE">Belgia</option>
    <option value="BG">Bułgaria</option>
    <option value="CH">Szwajcaria</option>
    <option value="CZ">Czechy</option>
    <option value="DE">Niemcy</option>
    <option value="DK">Dania</option>
    <option value="EE">Estonia</option>
    <option value="ES">Hiszpania</option>
    <option value="FI">Finlandia</option>
    <option value="FR">Francja</option>
    <option value="GB">Anglia</option>
    <option value="GB0">Szkocja</option>
    <option value="GB1">Walia</option>
    <option value="GB2">Irlandia Północna</option>
    <option value="GR">Grecja</option>
    <option value="IT">Włochy</option>
    <option value="LI">Liechtenstein</option>
    <option value="LT">Litwa</option>
    <option value="LU">Luksemburg</option>
    <option value="LV">Łotwa</option>
    <option value="MC">Monako</option>
    <option value="NL">Holandia</option>
    <option value="NO">Norwegia</option>
    <option value="PT">Portugalia</option>
    <option value="RO">Rumunia</option>
    <option value="SE">Szwecja</option>
    <option value="SI">Słowenia</option>
    <option value="SK">Słowacja</option>
</select>
<input type="submit" value="Shipping cost">
</form>
<script type="text/javascript">

function show() {
    
    d = document.getElementsByName(country);
    document.write(d);
    
switch (d) {
    case CZ:
        document.write("Wysyłka do Czech");
        break;
    case SK:
        document.write("Wysyłka do Słowacji");
        break;
    case DE:
        document.write("Wysyłka do Niemiec");
        break;
    case AT:
        document.write("Wysyłka do Austrii");
        break;
    case BE:
        document.write("Wysyłka do Belgii");
        break;
    case BG:
        document.write("Wysyłka do Bułgarii");
        break;
    case DK:
        document.write("Wysyłka do Danii");
        break;
    case EE:
        document.write("Wysyłka do Estonii");
        break;
    case FR:
        document.write("Wysyłka do Francji");
        break;
    case NL:
        document.write("Wysyłka do Holandii");
        break;
    case LT:
        document.write("Wysyłka do Litwy");
        break;
    case LU:
        document.write("Wysyłka do Luksemburga");
        break;
    case LV:
        document.write("Wysyłka do Łotwy");
        break;
    case MC:
        document.write("Wysyłka do Monako");
        break;
    case RO:
        document.write("Wysyłka do Rumunii");
        break;
    case GB:
        document.write("Wysyłka do Anglii");
        break;
    case FI:
        document.write("Wysyłka do Finlandii");
        break;
    case ES:
        document.write("Wysyłka do Hiszpanii");
        break;
    case SI:
        document.write("Wysyłka do Słowenii");
        break;
    case GB0:
        document.write("Wysyłka do Szkocji");
        break;
    case SE:
        document.write("Wysyłka do Szwecji");
        break;
    case GB1:
        document.write("Wysyłka do Walii");
        break;
    case IT:
        document.write("Wysyłka do Włoch");
        break;
    case GB2:
        document.write("Wysyłka do Irlandii Północnej");
        break;
    case PT:
        document.write("Wysyłka do Portugalii");
        break;
    case GR:
        document.write("Wysyłka do Grecji");
        break;
    case NO:
        document.write("Wysyłka do Norwegii");
        break;
    case LI:
        document.write("Wysyłka do Liechtensteinu");
        break;
    case CH:
        document.write("Wysyłka do Szwajcarii");
        break;
}    

    
}
</script>
</body>
</html>
mortus
Zdarzenie onchange powinno być selectowi przypisane.
ziqzaq
[JAVASCRIPT] pobierz, plaintext
  1. d = document.getElementsByName(country);
[JAVASCRIPT] pobierz, plaintext

Nie masz nigdzie zmiennej country więc elementy (liczba mnoga!) nie zostaną pobrane.
Dlaczego elementy? Czytaj document.getElementsByName().
[JAVASCRIPT] pobierz, plaintext
  1. switch (d) {
  2. // ...
  3. }
[JAVASCRIPT] pobierz, plaintext

Do switch przekazujesz obiekt kolekcji html (gdyby był prawidłowo pobrany) a nie wartość wybranej opcji.
[JAVASCRIPT] pobierz, plaintext
  1. //...
  2. case CZ:
  3. case SK:
  4. // itd.
[JAVASCRIPT] pobierz, plaintext

Nie masz nigdzie zmiennych podanych w case-ach (to nie są ciągi znaków!).
Te wszystkie błędy składają się na to, że skrypt nie działa.
Rady:
1. Firefox + Firebug - żebyś widział błędy i wyciągał z nich wnioski.
2. Google i "javascript select" (np. to).
3. Google i "javascript strings" (np. to) - to odnośnie tego czym się różni ciąg znaków od zmiennej zawierającej go.
4. document.write() w tym przypadku prawdopodobnie nie zachowa się tak jak tego oczekiwałeś. Możesz poszukać informacji o "javascript innerHTML".
Ogólnie kod jest raczej bez ładu i składu.
MateuszS
///wyprzedzony ;]

Poza tym pamiętaj o cudzysłowach.

  1. d = document.getElementsByName("country");


  1. case "CZ": //itd
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.