Witam
Otóż tworząc skrypt, który ma wyświetlać ciąg liczbowy między dwoma liczbami wprowadzonymi przez użytkownika zarówno ujemny jak i dodatni natknąłem się na pewien problem, z którym sobie już nawet poradziłem jednak nie do końca wiem z czego ten błąd wynikał, dlatego postanowiłem się tutaj was o to zapytać.
Skrypt ma działać tak jak na przykładzie. Użytkownik podaje 1 liczbę= 2,a 2 liczbę= 10 i ma wyświetlić po kolei cyfry 2-10.
Wykonałem taki kod, najprościej jak mogłem:
<script type="text/javascript">
var liczba1= prompt ("Wprowadz liczbe 1:","");
var liczba2= prompt ("Wprowadz liczbe 2:","");
if (liczba1<liczba2)
{
for (liczba1;liczba1<=liczba2;liczba1++)
{
document.write(liczba1 +" ");
}
}
if (liczba1>liczba2)
{
for(liczba1;liczba1>=liczba2;liczba1--)
{
document.write(liczba1 +" ");
}
}
</script>
I tu pojawiają się problemy. Otóż jak użytkownik podaje liczbę 1 większą od drugiej, to ciąg nie wyświetla się prawidłowo dodając 1 liczbę i powtarza ostatnią liczbę jeszcze raz. Przykładowo jak użytkownik poda pierwszą liczbę=2, zaś drugą 8 to wyświetli się następujący ciąg 2 3 4 5 6 7 8 9 8.
Zaś jak użytkownik poda pierwszą liczbę= 2, a drugą= 10 to jako ciąg wyświetli się tylko liczba 2, nie bardzo wiem czemu?
Albo jak użytkownik wpiszę pierwszą liczbę=100, a drugą= 88 to wyświetli się taki ciąg 100 101 100 99 98 97 96 95 94 93 92 91 90 89 88.
Dlaczego tak się dzieje, co jest tego powodem?
Drugi przykład jest taki, że jak dodam do tego pierwszego skryptu x w pętli i przypiszę go do zmiennej liczba1 to wtedy część problemów znika tzn. ciąg wyświetla się prawidłowo przy podaniu liczb na przykład od 2 do 8 ale jak wpiszę liczbę od 2 do 10 to nadal wyświetla się w tym przypadku tylko liczba 2.
<script type="text/javascript">
var liczba1= prompt ("Wprowadz liczbe 1:","");
var liczba2= prompt ("Wprowadz liczbe 2:","");
if (liczba1<liczba2)
{
for (x=liczba1;x<=liczba2;x++)
{
document.write(x +" ");
}
}
if (liczba1>liczba2)
{
for(x=liczba1;x>=liczba2;x--)
{
document.write(x +" ");
}
}
</script>
Co zmienia przypisanie x do zmiennej liczba1. Przecież to na to samo wychodzi teoretycznie, nie rozumiem.
Skrypt działa całkowicie prawidłowo dopiero gdy dodam do funkcji prompt dodatkowo funkcję parseInt.
<script type="text/javascript">
var liczba1= parseInt(prompt ("Wprowadz liczbe 1:",""));
var liczba2= parseInt(prompt ("Wprowadz liczbe 2:",""));
if (liczba1<liczba2)
{
for (x=liczba1;x<=liczba2;x++)
{
document.write(x +" ");
}
}
if (liczba1>liczba2)
{
for(x=liczba1;x>=liczba2;x--)
{
document.write(x +" ");
}
}
</script>
Myślę, że w miarę dokładnie opisałem problem i bardzo proszę o wyjaśnienie problemu.