Pobranie wartości z okna dialogowego do instrukcji switch.

0

Witajcie,

jestem początkujący w js i niestety już na samym początku poległem przy najprostszych rzeczach. Potrzebuje pomocy w pobraniu wartości z okna dialogowego do instrukcji switch. Wpisując w oknie dialogowym wartość w przedziale 0-6 muszę wyświetlić dzień tygodnia. Zamiast konstruktora Date(); podstawiam swoją zmienną do której wprowadzam bezskutecznie wartość. Bardzo proszę o wsparcie.

<html>
<head>
<title>Dzień Tygodnia</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script type="text/javascript">

var dzien=prompt('Podaj numer dnia','Tu wpisz numer');

switch(dzien){
case 0: 
document.write("Dziś jest Niedziela");
break;
case 1:
document.write("Dziś jest Poniedziałek");
break;
case 2:
document.write("Dziś jest Wtorek");
break;
case 3:
document.write("Dziś jest Środa");
break;
case 4: 
document.write("Dziś jest Czwartek");
break;
case 5:
document.write("Dziś jest Piątek");
break;
case 6:
document.write("Dziś jest Sobota");
break;
default:
document.write("Dziś jest: UPS! Coś poszło nie tak!"+"<br />");
document.write("wartość zmiennej dzien wynosi: " + dzien);
}

</script>
</body>
</html>
1

W JavaScript wartości są porównywane na dwa sposoby.

  1. == czyli nazwijmy to miękkie porównanie. W tym wypadku zgodnie z zasadami wartości są rzutowane, trochę jak sprowadzane do wspólnego mianownika, a później porównywane.
var a = 0;
var b = "0"; 
a == b // true
// w tym wypadku porównujemy liczbę i string, więc zgodnie z tabelką wykona się porównanie a === ToNumber(B)
// ToNumber to właśnie to rzutowanie, czyli javascript próbuje wyciągnąć ze stringa numer, w tym wypadku mu się to uda
  1. === nazwijmy to porównanie twarde. Czyli najpierw javascript sprawdza czy typy są takie same, np. string i string, numer i numer itd., a dopiero później sprawdza faktyczne wartości.
var a = 0;
var b = "0";
var c = 0;
a === b // false
a === c // true

Wracając do twojego pytania. Instrukcja switch:case sprawdza z użyciem ===. Funkcja prompt zwraca string, a nie integer (numer, liczbę), a jak już wiemy "0" nie równa się 0.

Wystarczy, że jawnie zrzutujesz wynik zapytania na liczbę:

var dzien = parseInt(prompt('Podaj numer dnia','Tu wpisz numer'), 10); // 10 informuje, że używamy system dziesiętny

Odsyłam do Jak uczyć się JavaScript? - przeczytaj, zanim zadasz pytanie na temat materiałów do nauki.

Jeżeli pójdziesz wskazaną tam ścieżką to unikniesz takich frustracji, bo materiały tam zawarte wszystko dobrze tłumaczą.
Btw. staraj się od razu nazywać zmiennę w j. ang :)

0

O kurde, liczyłem na krótką podpowiedź i to wszystko a dostałem cały wachlarz :) Oczywiście wszystko już działa tak jak mi się wymarzyło. Bardzo Ci dziękuję za odpowiedź i cenne podpowiedzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1