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

Pętla for co 2 JavaScript

Cloud VPS
0 głosów
1,370 wizyt
pytanie zadane 19 czerwca 2015 w JavaScript przez kaczmar Początkujący (490 p.)
edycja 19 czerwca 2015 przez Comandeer

Witam.Pętla nie chce mi pokazywać liczb co 2.
Jeśli w pętli (pętla na czerwono) zamiast x=x+2 wstawie x++ to dodaje mi co jeden więc mam pewność że  pętla jest dobrze zrobiona i działa.Znowu w pętli poniżej (pętla na niebiesko) zastosowany jest ten sam układ tylko ze znakiem ujemnym i pętla działa poprawnie. Gdzie jest błąd?

 

liczbaA=prompt("Podaj pierwszą liczbę");
liczbaB=prompt("Podaj drugą liczbę");

if(liczbaA<liczbaB)
{
   var wynik =  "" ;
for (x=liczbaA;x<=liczbaB;x=x+2)
{
      wynik = wynik + (x+",");


}else if(liczbaA>liczbaB)
    {
       wynik ="";
       for(x = liczbaA; x>=liczbaB; x=x-2)
       {
         wynik = wynik + (x + ",") ;
       }

}

 

3 odpowiedzi

+1 głos
odpowiedź 19 czerwca 2015 przez iwan9449 Pasjonat (20,810 p.)
wybrane 22 stycznia 2016 przez kaczmar
 
Najlepsza

Nie zajmuje się kodowaniem w js, ale chyba wiem dlaczego Twój kod nie działa. Wydaje mi się, że wartośc pobrana poprzez pompt jest tak jakby stringiem i w momencie gdy dodajesz do niego 2 to tak naprawdę robisz konkatenację x i 2 czyli poprostu do ciągu znaków jakim jest x dopisujesz 2. Jeżeli np podstawisz pod x jakąś liczbę zamiast liczabaA to wszystko działa jak należy. Niestety jako, że nie zajmuję się js nie wiem jak rozwiązać ten problem, ale mam nadzieję, żę moje spostrzeżenie pomoże Tobie rozwiązać swój problem. :)

Edit:

już mam ;)

liczbaA=prompt("Podaj pierwszą liczbę"); 
liczbaB=prompt("Podaj drugą liczbę");

if(liczbaA<liczbaB) 
{ 
   var wynik =  "" ; 
for (x=parseInt(liczbaA);x<=liczbaB;x+=2) 
{ 
      wynik = wynik + (x+","); 
}

}



Pozdrawiam!

komentarz 19 czerwca 2015 przez Eerie Mądrala (7,130 p.)
komentarz 19 czerwca 2015 przez iwan9449 Pasjonat (20,810 p.)
Dzieki, pomocny komentarz ;) nie wiedziałem, że w js można konwertować pomiędzy typami ;P
0 głosów
odpowiedź 19 czerwca 2015 przez Eerie Mądrala (7,130 p.)
Nie wiem dlaczego ci nie działa.

Ale spróbuj x+=2. Może tak zadziała.
komentarz 19 czerwca 2015 przez kaczmar Początkujący (490 p.)
Próbowałem i dalej nie chce działać.
komentarz 19 czerwca 2015 przez Boshi VIP (100,240 p.)
A to znaczenia nie ma, bo to ten sam zapis.
 Problem leży pewnie gdzieś w warunku.
0 głosów
odpowiedź 19 czerwca 2015 przez Comandeer Guru (607,100 p.)

Jak sugeruje @iwan9449, operator + w JS jest przeciążony i wykonuje dwie operacje równocześnie: w zależności od tego z jakimi zmiennymi go wywołamy.

Gdy dodajemy do siebie dwie zmienne i jedna z nich jest tekstem, to wtedy zawsze ostatecznie otrzymamy tekst:

2 + '0'; //'20'

Każdy input od usera jest traktowany jako string, więc dodanie do niego 2 powoduje powstanie ciągu podobnego do naszej nieszczęśliwej 20. Należy go przekonwertować na liczbę:

var liczbaA = parseInt(prompt('Podaj liczbę A'), 10);

parseInt bierze 2 parametry: 1. to zmienna, którą chcemy przerobić na liczbę, 2. to podstawa systemu liczbowego (chcemy liczbę dziesiętną, więc wstawiamy 10; jak wstawisz 2 to przerobi na dwójkowy, 8 - ósemkowy itd.).

Z operatorem - tego problemu nie ma, bo służy tylko i wyłącznie do odejmowania.

 

I jeszcze jedna uwaga: zmienne ZAWSZE deklarujemy przy użyciu słówka kluczowego var (lub let jeśli piszemy w ES6) - nawet te w pętli:

for(var x = liczbaA; x < 10; ++x)

Inaczej narażamy się na sporą liczbę błędów! http://tutorials.comandeer.pl/js-beauty.html#strict

Podobne pytania

0 głosów
2 odpowiedzi 295 wizyt
pytanie zadane 30 grudnia 2017 w JavaScript przez Sandwitch Użytkownik (630 p.)
0 głosów
2 odpowiedzi 1,681 wizyt
pytanie zadane 18 kwietnia 2015 w PHP przez makoso Mądrala (7,380 p.)
+1 głos
2 odpowiedzi 1,152 wizyt
pytanie zadane 27 lutego 2021 w JavaScript przez Darth Vader Początkujący (270 p.)

93,486 zapytań

142,419 odpowiedzi

322,771 komentarzy

62,900 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

Kursy INF.02 i INF.03
...