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

Funkcja i jej wywołanie w JS, brak błędów!?

Object Storage Arubacloud
0 głosów
110 wizyt
pytanie zadane 21 lipca 2018 w JavaScript przez Q7V Gaduła (4,250 p.)

Cześć, mam taki prosty skrypt w JS. Ma ładnie pisać tekst jak normalnie z klawiatury, ale coś nie styka. :P

<html>
<head>
	<link rel="Stylesheet" type="text/css" href="style.css" />
  	<title>Tytuł strony</title>
    <meta name="Description" content="Tu podaj opis twojej strony" />
    <meta name="Keywords" content="wyraz1, wyraz2, wyraz3..." />
		<script>
		var array = ["H","E","L","L","O","."];
		function typing(){
		for(i=0;i>=5;i++){
		setInterval(function(){document.getElementById('typing').innerHTML+=array[i];},200)
		}
		}
		</script>
</head>
<body onload="typing();">
<header>
<p class="pheader" id="typing">

</p>
</header>

Nie ma żadnych błędów, nie wiem gdzie leży problem.

2 odpowiedzi

+3 głosów
odpowiedź 21 lipca 2018 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 21 lipca 2018 przez Q7V
 
Najlepsza

Jest kilka błędów:

  • w pętli for zamiast warunku >= 5 powinieneś zapisać <= 5 (to już zauważył @Samboor)
  • setInterval wywoływane jest, gdy pętla skończy działanie, dlatego wypisywać będzie undefined. Jeśli zadeklarujesz iterator pętli słówkiem kluczowym let, wartość iteratora będzie zachowana dla każdego przebiegu pętli
  • zamiast setInterval bezpieczniej jest użyć setTimeout, ponieważ interwał musisz zatrzymać (inaczej będzie się wykonywał w nieskończoność), a setTimeout wykona się tylko tyle razy, ile będzie przebiegów pętli
  • czas opóźnienia timeouta pomnóż przez iterator pętli, dzięki temu każda litera będzie zapisana z opóźnieniem 200ms następującym po poprzednim. Obecnie wypisuje wszystkie litery na raz po 200ms

Poprawny zapis funkcji:

function typing() {
  for (let i = 0; i <= 5; i++) {
    setTimeout(function() {
      document.getElementById("typing").innerHTML += array[i];
    }, 200 * i);
  }
}

 

komentarz 21 lipca 2018 przez Q7V Gaduła (4,250 p.)
Dziękuje bardzo za pomoc, w JS bawiłem się jakiś czas temu, ale złapała mnie amnezja. Niby takie banalne błędy, ale analizowałem ten kod i nie skapnąłem się. :D Jeszcze raz dzięki wielkie za tak fajną odpowiedź! :)
+1 głos
odpowiedź 21 lipca 2018 przez niezalogowany
i >=5 popraw na i <= 5.

Tu leży błąd

Podobne pytania

0 głosów
1 odpowiedź 241 wizyt
+1 głos
1 odpowiedź 405 wizyt
pytanie zadane 3 lutego 2022 w JavaScript przez Asasader1 Nowicjusz (130 p.)
0 głosów
1 odpowiedź 1,824 wizyt
pytanie zadane 25 marca 2017 w JavaScript przez Sedki Początkujący (250 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 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!

...