Pomoc, ne znam zasto mi ne rade funkcije

3

Pomoc, ne znam zasto mi ne rade funkcije

offline
  • Milos Stojanovic
  • Programer u pokusaju
  • Pridružio: 31 Dec 2015
  • Poruke: 817
  • Gde živiš: Srbija / Zajecar

Znaci ako stavim Funckija() onda ce je kod pozvati da se odradi, a ako napisem Funckija u sklopu neke metode onda ce se komande iz Funckije predati toj nekoj metodi ili necemu drugom. Jel tako?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4451

Ne baš - neće se komande iz funkcije predati već će se funkcija proslediti kao argument da bi se kasnije eventualno pozvala. Funkcija kojoj prosleđuješ funkciju ne zna šta se u njoj nalazi.

Funkcije koje se prosleđuju kao parametri drugim funkcijama nazivaju se callback funkcije.



offline
  • Milos Stojanovic
  • Programer u pokusaju
  • Pridružio: 31 Dec 2015
  • Poruke: 817
  • Gde živiš: Srbija / Zajecar

Aha, znaci tako. A ono vezano za Math.min i Math.max funkcije kako sam mogao da je iskoristim u mom kodu i gde se one najcesce koriste? I da li sam upravu u vezi pisanja ++ ispred i iza promenljive?

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3541
  • Gde živiš: 127.0.0.1

Da, u pravu si za ++ i -- operatere. Vezano za implementaciju u tvom slucaju, to bi islo ovako nekako:

function rightArrowSlide(){     current  = Math.min(++current, sliderImages.length - 1); } function leftArrowSlide(){     current  = Math.max(--current, 0); }

Razumes li ovaj kod?

offline
  • Milos Stojanovic
  • Programer u pokusaju
  • Pridružio: 31 Dec 2015
  • Poruke: 817
  • Gde živiš: Srbija / Zajecar

Evo ovako ja to razumem.

sliderImages ima tri elementa u nizu sa indeksima 0, 1, 2 a current je dodeljena vrednost 0.
Ako smo na prvoj slici odnosno sliderImages[current = 0] i kliknemo na desnu strelicu koja ima ovu funkciju:
function rightArrowSlide(){     current  = Math.min(++current, sliderImages.length - 1); }
Onda current postaje minimum izmedju ++current sto je 1 i sliderImages.lenght - 1 sto je 2. I to je uredu, jer se onda prikazuje slika sa indeksom 1 i to je druga slika.
Kada se ponovo klikne desna strelica onda current postaje minimum izmedju ++current sto je 2 i sliderImages.lenght - 1 sto je i dalje 2. Onda ce funckija Math.min da uzme vrednost 2 (pretpostavljam, jer su obe vrednosti 2). To je opet u redu, jer nam treba treca slika odnosno slika sa indeksom 2.
Kada ponovo kliknemo desnu strelicu onda current postalje minimum izmedju ++current sto je 3 i sliderImages.lenght - 1 sto je i dalje 2. Znaci prikazace nam se ponovo treca slika odnosno slika sa indeksom 2, jer je sada u Math.min minimum sliderImages.lenght - 1.

Jel sam dobro shvatio?

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3541
  • Gde živiš: 127.0.0.1

Jesi, sve je bas onako kako si opisao.

Dopunsko pitanje: zasto se koristi min/max u ovom slucaju? I kako bi izgledao kod da ih ne koristis?

offline
  • Milos Stojanovic
  • Programer u pokusaju
  • Pridružio: 31 Dec 2015
  • Poruke: 817
  • Gde živiš: Srbija / Zajecar

Napisano: 25 Feb 2018 17:58

Evo ga moj ceo kod sa HTML CSS JS. Pogledaj ga molim te i reci mi da li one dve funkcije koje si mi poslao i dalje treba da budu takve kakave jesu da bi kod radio posto mi kod ne radi ako samo njih zamenim sa mojim sadasnjih funkcijama.

Dopuna: 25 Feb 2018 18:08

Napravio sam ovu funkciju:

function rightArrowSlide() {   reset();   if (current === sliderImages.length - 1)     current = -1;   current = Math.min(++current, sliderImages.length - 1);   sliderImages[current].style.display = 'block'; }

Ona radi umesto ove dve zajedno:

function slideRight() {   reset();   sliderImages[current + 1].style.display = 'block';   current++; } function rightArrowSlide() {   if (current === sliderImages.length - 1)     current = -1;   slideRight(); }

Dopuna: 15 Mar 2018 15:53

Pozdrav!

Naidjoh na problem. Prvo cu poslati kod pa cu objasniti gde sam zapeo.

HTML
<a href="#"><i class="fa fa-facebook-official" aria-hidden="true"></i></a> <a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a> <a href="#"><i class="fa fa-instagram" aria-hidden="true"></i></a> <a href="#"><i class="fa fa-google-plus" aria-hidden="true"></i></a> <a href="#"><i class="fa fa-linkedin"></i></a>

CSS
.fa {   color: #262626;   font-size: 30px;   position: absolute;   top: 20px;   right: 20px; }

JS
var j; var Fa = document.querySelectorAll('.fa'); for (i = 0, j = 50; i < Fa.length; i++, j = j + 50) {   Fa[i].style.top = "j" + "px"; }

Zelim da mi svaka sledeca fontawesome ikonica bude za 50px ispod prethodne. Ja sam zamislio da mi pomocu i brojaca svaka sledeca ikonica bude pomerena za 50px pomocu j brojaca. Ne razumem zasto mi ne radi kod.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14216
  • Gde živiš: Niš

Pa kako se manifestuje to "ne radi"? Jesi probao da debagiraš?

offline
  • Milos Stojanovic
  • Programer u pokusaju
  • Pridružio: 31 Dec 2015
  • Poruke: 817
  • Gde živiš: Srbija / Zajecar

Nista se ne desava, nema nikakvog efekta. Ako u for ciklusu komandu za menjanje top pozicije zamenim sa komandom za menjanje boje slova onda se slova i promene. Inace, nisam probao sa debuggerom. Nisam se bakcao sa tim, ali izgleda da cu morati i to da naucim.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14216
  • Gde živiš: Niš

Pa počni da se bakćeš. Programer koji ne ume da debagira kod koji je sam napisao i nije neki programer...

Ko je trenutno na forumu
 

Ukupno su 515 korisnika na forumu :: 26 registrovanih, 2 sakrivenih i 487 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1567 - dana 15 Jul 2016 19:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., aleksmajstor, Alojz Hauptman, atrkulja, Bloody, HollowPoint, ibssa, indja, ivica976, kvcali, menges, Milan Kosić, milan.tatanac, MILO-VAN, Miskohd, pavlo2, repac2, rovac, royst33, Srki94, stalker2, stug, Toni, virked, vlvl, zillbg