• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Prosty skrypt JS - co jest nie tak z if'ami?

Object Storage Arubacloud
–1 głos
681 wizyt
pytanie zadane 24 sierpnia 2017 w JavaScript przez maciek061 Gaduła (4,490 p.)
zamknięte 24 sierpnia 2017 przez maciek061

Witam, zacząłem się uczyć JS'a i to zadanie jest po to, żeby się nauczyć if'ów, uchwytów, wywoływania funkcji itp. Skrypt ma wypisywać liczby od liczba1 do liczba2. I jak patrzę na te ify to wszystko jest w porządku. Jak wpisuję 1 i 100 to działa, a jak np. wpisuję 15 i 100 to wykonuje się else. O co tu chodzi?

<!DOCTYPE html>
<html lang="pl">
	<head>
		<meta charset="utf-8" />
		<title>
			Lekcja 2 z Jot Esa
		</title>
		
		<style type="text/css">
			div{color:yellow;}
		</style>
		
		<script type="text/javascript">
			
			function wypisz()
			{
				var liczba1 = document.getElementById("pole1").value;
				var liczba2 = document.getElementById("pole2").value;
				var napis = "";
				
				if(liczba1<liczba2) {for (i=liczba1; i<=liczba2; i++)
				{
					napis+=i+" ";
				}
				document.getElementById("wynik").innerHTML = napis;}
				
				else document.getElementById("wynik").innerHTML = "Hmm... Mam wrażenie, że coś tu nie gra. ";
			}
			
		</script>

	</head>
	<body bgcolor="#2E121A">
		
		<input type="text" id="pole1" />
		<input type="text" id="pole2" />
		<input type="submit" value="Pokaż" onclick="wypisz()"/>
		
		<div id="wynik">
		
		</div>
		
	</body>
</html>

 

komentarz zamknięcia: Problem rozwiązany

3 odpowiedzi

+2 głosów
odpowiedź 24 sierpnia 2017 przez niezalogowany
wybrane 24 sierpnia 2017 przez maciek061
 
Najlepsza
var liczba1 = parseInt(document.getElementById("pole1").value);
var liczba2 = parseInt(document.getElementById("pole2").value);

 

Twój input wstawia w te zmienne stringi a nie liczby więc musisz je przekonwertować za pomocą funkcji parseInt()

komentarz 24 sierpnia 2017 przez maciek061 Gaduła (4,490 p.)
Dzięki za pomoc, teraz działa. A dlaczego wcześniej dla jednych liczb działało, a dla innych nie?
komentarz 24 sierpnia 2017 przez niezalogowany

Strings are compared character by character until they are not equal or there aren't any characters left to compare. The first character of '11' is less than the first character of '3'.

> '11' < '3'
true
> '31' < '3'
false
> '31' < '32'
true
> '31' < '30'
false

If we use letters then, since b is not less than a, abc is not less than aaa, but since c is less than d, abc is less than abd.

> 'abc' < 'aaa'
false
> 'abc' < 'abd'
true

https://stackoverflow.com/a/10863114/7733456

–1 głos
odpowiedź 24 sierpnia 2017 przez Cyborek Użytkownik (850 p.)
Kod, który chcesz, aby wykonał się w else umieść w klamrach. Tak samo, jak przy If
komentarz 24 sierpnia 2017 przez maciek061 Gaduła (4,490 p.)
Przecież to jest jedno polecenie, więc po co klamry? Nic się nie zmieniło gdy je dodałem.
–1 głos
odpowiedź 24 sierpnia 2017 przez sc4rface Dyskutant (7,710 p.)

Jedna klamra domykająca za dużo i niezdefiniowane zmienne, na których próbowałeś operować. Gdybyś nieco ładniej ułożył kod - z pewnością byś to zauważył. Mam tylko nadzieję, że masz w kodzie HTML zdefiniowany div "wynik", inaczej skrypt nie zadziała.

@EDIT

Miałeś jeszcze błąd w przypisaniu zmiennej, nie wiem skąd ten plus przy przypisaniu.

liczba1 = 5;
liczba2 = 10;

if (liczba1 < liczba2) {

    for (i = liczba1; i <= liczba2; i++) {
    
    napis = i + " "; 
    document.getElementById("wynik").innerHTML = napis;
    }

    
    } else {
    
        document.getElementById("wynik").innerHTML = "Hmm... Mam wrażenie, że coś tu nie gra. ";
}

 

komentarz 24 sierpnia 2017 przez maciek061 Gaduła (4,490 p.)
Gdzie jest ta niepotrzebna klamra domykająca? Co do definiowania zmiennych, przepisałem ten kod z kursu MS, tylko pozmieniałem kolorki i dodałem else (bo takie było zadanie domowe). Podałem cały kod, jest div wynik, wystarczy spojrzeć. Poza tym, dlaczego dla jednych liczb działa, a dla innych nie?

Podobne pytania

0 głosów
2 odpowiedzi 115 wizyt
pytanie zadane 31 stycznia 2020 w JavaScript przez Drezer73 Nowicjusz (220 p.)
0 głosów
2 odpowiedzi 207 wizyt
pytanie zadane 15 lutego 2020 w JavaScript przez Drezer73 Nowicjusz (220 p.)
–1 głos
0 odpowiedzi 151 wizyt
pytanie zadane 7 lutego 2018 w JavaScript przez Shanksy Nowicjusz (120 p.)

92,626 zapytań

141,483 odpowiedzi

319,834 komentarzy

62,006 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...