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 https://4programmers.net/Forum/JavaScript/284930-jak_uczyc_sie_javascript_przeczytaj_zanim_zadasz_pytanie_na_temat_materialow_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