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

Pętla z pominięciem jednego indeksu

+1 głos
86 wizyt
pytanie zadane 29 sierpnia w JavaScript przez ShockWave Obywatel (1,900 p.)

Cześć, mam chciałbym zrobić pętlę, która wykonywała by się od zera do określonej ilości, ale z pominięciem liczby 1.

Napisałem coś takiego ale nie działa

for (let i = 0 && i !== 1 ; i < photoFrame.length; i++)
        {
            photoFrame[i].style.border = "2px solid #EBEBEB";
            photoFrame[i].style.width = "82px";
            photoFrame[i].style.height = "82px";
            photoFrame[i].style.display = "flex";
            photoFrame[i].style.alignItems = "center";
            photoFrame[i].style.justifyContent = "center";
            photoFrame[i].style.margin = "5px 0px"
        }

Z góry dziękuję za pomoc.

3 odpowiedzi

0 głosów
odpowiedź 29 sierpnia przez VBService VIP (128,190 p.)
wybrane 2 września przez ShockWave
 
Najlepsza

Proponuje rozwiązanie bez pętli for, tylko użycie forEach i dodanie styli za pomocą classList.add

 

Przykład

.photo-frame {
  border: 2px solid #EBEBEB;
  width: 82px;
  height: 82px;
  display: flex;
  alignItems: center;
  justifyContent: center;
  margin: 5px 0px;
}
setCssToSelected('photo-frame', 1);

function setCssToSelected(css, remove) {
  const photoFrame = document.querySelectorAll('.photoFrame');
  photoFrame.forEach((frame, index) => { if (index !== remove) frame.classList.add(css); });
}
+3 głosów
odpowiedź 29 sierpnia przez ScriptyChris Mędrzec (166,060 p.)

Do pomijania iteracji służy słówko continue używane w ciele pętli.


Zapis:

let i = 0 && i !== 1;

w sekcji inicjalizacyjnej pętli nie ma sensu, ponieważ nawet jeśli byś tutaj chciał sprawdzić czy i nie jest równe 1, to operator && nie wykonałby tego sprawdzenia, ponieważ po lewej stronie wartością jest 0 (typ falsy); poza tym ta część nagłówka pętli wykonuje się tylko raz (dlatego jest przeznaczona do inicjalizacji zmiennych). Sprawdzenie tego w innym miejscu nagłówka pętli, żeby pominąć iterację, również nie ma sensu, ponieważ pętla for działa na zasadzie "iteruj dopóki warunek jest spełniony" i gdy tylko warunek przestaje być spełniany, to cała pętla się zatrzymuje - nie dało by się więc (przynajmniej beż jakiejś rekursji lub zagnieżdżania pętli lub kombinacji z generatorem) wznowić pętli od danego miejsca.

komentarz 29 sierpnia przez ShockWave Obywatel (1,900 p.)
dzięki za wytłumaczenie :)
+2 głosów
odpowiedź 29 sierpnia przez SzkolnyAdmin Maniak (60,280 p.)

Instrukcja warunkowa w ciele pętli:

if(i==1) continue;

 

Podobne pytania

+1 głos
3 odpowiedzi 414 wizyt
pytanie zadane 14 września 2015 w JavaScript przez fgrzesiek Nowicjusz (160 p.)
0 głosów
1 odpowiedź 95 wizyt
pytanie zadane 13 lutego 2018 w JavaScript przez PanKill Nowicjusz (230 p.)
0 głosów
1 odpowiedź 52 wizyt
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

85,212 zapytań

134,029 odpowiedzi

297,158 komentarzy

56,309 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...