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

Nieskończona pętla javascript

VPS Starter Arubacloud
0 głosów
2,630 wizyt
pytanie zadane 7 lipca 2018 w JavaScript przez Kamil Batorski Obywatel (1,870 p.)

Witam,

Tworzę pętle, która wysyła co 1 sekundę wiadomość i pętla jest nieskończona (jeśli jest ostatnia wiadomość, wraca do pierwszej i pętla trwa dalej). Skrypt nie działa. Po wysłaniu ostatniej wiadomość następuje koniec pętli. Proszę o pomoc.

Kod:

var text = "";
var i = 1;


for (let i=1; i<4; i++) {
    setTimeout( function timer(){
		text += "<br>The number is " + i;
		if (i == 1) {
			text += "<br>Message 1";
		}
		if (i == 2) {
			text += "<br>Message 2";
		}
		if (i == 3) {
			text += "<br>Message 3";
			return 1;
		}
		document.getElementById("demo").innerHTML = text;
    }, i*1000 );
}

Pozdrawiam, Kamil

komentarz 7 lipca 2018 przez GracjanDogg Użytkownik (840 p.)
A próbowałeś wyzerować "i" w ostatnim ifie?

1 odpowiedź

+1 głos
odpowiedź 7 lipca 2018 przez Tomek Sochacki Ekspert (227,510 p.)
wybrane 7 lipca 2018 przez Kamil Batorski
 
Najlepsza
A nie lepiej użyć funkcji setInterval skoro ma to być jak piszesz "pętla nieskończona"? Na przykład coś takiego:

https://codepen.io/Tomek_Sochacki/pen/XYvWNo?editors=1010

Zrobiłem tam na szybko funkcję, która pobiera trzy argumenty: tablicę wiadomości do wyświetlana, selektor do pobrania referencji DOM dla elementu gdzie ma wyświetlać wyniki i czas (interwał) co jaki wiadomości mają być pokazywane. Dzięki temu możesz zrobić uniwersalną funkcję, którą wykorzystasz np. w kilku miejscach.

Jest to pisane na szybko, o 1 w nocy nie chce mi się już zbytnio myśleć więc nie sugeruj się kodem lecz bardziej traktuj to jako pomysł na zasadę rozwiązania problemu.

Rozwiązanie to pozwala Ci też w razie potrzeby dać opcję zatrzymania setInterval.

Ewentualnie można by pobawić się generatorem z jakąś pętelką while albo do-while gdzie w sumie również można by dać opcję zakończenia generatora i przejście do return() po przekazaniu jakiegoś parametru do metody next(). Jak znajdę jutro chwilę to może coś się pobawię tym pomysłem.

Podobne pytania

0 głosów
1 odpowiedź 891 wizyt
pytanie zadane 27 grudnia 2018 w JavaScript przez kacperl95 Obywatel (1,980 p.)
0 głosów
0 odpowiedzi 422 wizyt
0 głosów
1 odpowiedź 301 wizyt
pytanie zadane 7 listopada 2020 w Mikrokontrolery przez xdmik23 Gaduła (3,000 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...