Pomoc, ne znam zasto mi ne rade funkcije

2

Pomoc, ne znam zasto mi ne rade funkcije

offline
  • Pridružio: 31 Dec 2015
  • Poruke: 1267

Sada sam u JS napisao ovo i radi.

document.getElementsByClassName("navbar")[0].style.backgroundColor = 'green';

Hvala.



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

Milos ZA ::Sada sam u JS napisao ovo i radi.
Da li u potpunosti razumeš šta ta linija koda radi (inače je u redu, samo pitam) ? Smile



offline
  • Pridružio: 31 Dec 2015
  • Poruke: 1267

Napisano: 20 Feb 2018 15:14

Ta komanda vraca sve elemente sa navedenom klasom kao niz i ja onda izaberem odredjen element preko indeksa. Jel sam dobro shvatio?

Dopuna: 20 Feb 2018 16:45

Ne mogu da pronadjem kako da pristupim tagu u tagu. Na primer imam ovaj kod:

HTML

<section class="section-a">             <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam quod necessitatibus natus optio nemo eligendi et dignissimos, illo tenetur sapiente quae, cumque nam rem. Error maxime fugit laudantium ad ab, atque exercitationem aliquid quibusdam natus eveniet eius at obcaecati placeat, provident consequuntur molestias similique veritatis sed suscipit accusantium. Similique, sequi!</p>          </section>

Kako da preko JS pristupim <p> tagu? Prvo izaberem sekciju preko:

document.getElementsByClassName("section-a")[0]

E sad mi nije jasno kako da nastavim u <p> tag, jer na primer zelim da promenim font-size teksta. Ne znam kako ide sintaksa, a ne znam kako da je pronadjem na Googlu. Ako moze mala pomoc.

Dopuna: 20 Feb 2018 16:53

Skontao sam. Evo kako sam to uradio:

JS

var x = document.getElementsByClassName("section-a")[0]; var y = x.getElementsByTagName("p")[0].style.fontSize = "50px";

Dopuna: 20 Feb 2018 17:12

Opet naidjoh na problem. Napravio sam funkciju u JS:

function myFunction(){   var nav = document.getElementsByClassName("navbar")[0];   var bodyscroll = document.getElementsByClassName("container")[0].scrollTop;   if (bodyscroll >= 50)     nav.style.backgroundColor = 'green';   else     nav.style.backgroundColor = 'yellow'; }

U HTML-u imam ovo:

<!DOCTYPE html> <html lang="en"> <head>    <meta charset="UTF-8">    <title></title>    <link rel="stylesheet" type="text/css" href="css/style.css">    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">    <!--https://www.w3schools.com/icons/fontawesome_icons_intro.asp--> </head> <body>       <div class="container">          <div class="head"></div>          <div class="opacity"></div>          <div class="heading">             <h1>Welcome to</h1>             <h2>world greatest private <br> car collection</h2>             <h2 class="desp">Hope that you will like what we have to offer</h2>             <nav class="navbar">                <ul>                   <li class="active"><a href="index.html">Home</a></li>                   <li><a href="index.html">Owner</a></li>                   <li><a href="index.html">Gallery</a></li>                   <li><a href="index.html">Location</a></li>                   <li><a href="index.html">Contact</a></li>                </ul>             </nav>          </div>          <section class="section-a sec">             <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam quod necessitatibus natus optio nemo eligendi et dignissimos, illo tenetur sapiente quae, cumque nam rem. Error maxime fugit laudantium ad ab, atque exercitationem aliquid quibusdam natus eveniet eius at obcaecati placeat, provident consequuntur molestias similique veritatis sed suscipit accusantium. Similique, sequi!</p>          </section>          <section class="section-b sec">             <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempora perspiciatis quae tempore recusandae consequuntur fugit perferendis incidunt alias omnis totam libero culpa minus, ratione maxime necessitatibus eius dolorem itaque natus mollitia sed nostrum. Nostrum voluptates esse harum magni eos nihil fugiat neque quia perspiciatis aspernatur, alias nobis quis asperiores explicabo.</p>          </section>          <div id="mama"></div>       </div>       <script src="js/main.js"></script> </body> </html>

U sustini ispred zatvarajuceg <body> taga sam pozvao eksterni JS fajl u kome se nalazi funkcija koju zelim da upotrebim. Sta ja zelim da postignem. Zelim da mi navigacija bude zuta ako nisam skrolovao, a ako jesam onda da bude zelena. Gde gresim?

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

Procitaj malo o querySelector-u. Mnogo bolji API za DOM manipulaciju.

offline
  • Pridružio: 31 Dec 2015
  • Poruke: 1267

Nesto mi nije jasno. Jel te komande preko query selektora pripadaju JS ili necem drugom?

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

Cist javascript. Lici malcice na jQuery, ali je cist JS i poprilicno podrzan u svim browserima (cak i u IE8).

Ono sto si ti napisao ovako:

document.getElementsByClassName("section-a")[0]

moze da se napise i ovako:

document.querySelector('.section-a')

sa istim rezultatom (querySelector vraca samo prvi "pogodak"). Ako zelis niz sa svim elementima koji imaju tu klasu, onda koristis querySelectorAll, takodje nad document objektom.

offline
  • Pridružio: 31 Dec 2015
  • Poruke: 1267

Imam pitanje vezano za addEventListener. Da li mogu da napravim neki funkciju posebno u JS dokumentu i da je onda pozovem u addEventListener ili moram direktno u njemu da je pisem. Evo ga moj konkretan primer. Funkcija sluzi za Image Slider da se prikaze sledeca slika.

Ovaj kod ne radi.

// RIGHT ARROW SLIDE function rightArrowSlide() {   if (current === sliderImages.length - 1)     current = -1;   slideRight(); } // RIGHT ARROW CLICK rightArrow.addEventListener('click', rightArrowSlide());

Ovaj kod radi kako treba.

// RIGHT ARROW CLICK rightArrow.addEventListener('click', function(){   if (current === sliderImages.length - 1)     current = -1;   slideRight(); });

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

Mozes, ali ne tako kako si zamislio Wink Probaj ovako:

// RIGHT ARROW CLICK rightArrow.addEventListener('click', rightArrowSlide);

Usput, procitaj malo o ++ i -- operaterima, kao i kako se ponasaju kad su iza, a kako kad su ispred promenljive. Ne bi bilo lose da pogledas i Math.max i Math.min funkcije, trebace ti bas za ovo.

offline
  • Pridružio: 31 Dec 2015
  • Poruke: 1267

Damn son, where did you find this? Very Happy Znao sam da ce neka zagrada ili tacka da me zezne. Citao sam malopre o addEventListener i nisam primetio da kad se poziva nova funkcija da joj se pise samo ime, a ne i zagrade.

Vezano za Math.min i Math.max funkcije, koliko vidim oni izvlace minimum i maksimum iz nekog niza, ali ne vidim kako mi to moze pomoci u mom kodu.

Sto se tice pisanja ++ i -- ispred ili iza varijable to sam citao mali milion puta i ovde na forumu i po internetu i mislim da sam shvatio. Ako stavimo a++ onda cemo prvo iskoristiti vrednost a za neki uslov ili nesto slicno pa cemo tek onda povecati a za 1. Ako napisemo ++a onda cemo prvo a povecati za 1 pa tek onda koristiti novu vrednost za nase potrebe.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Rastafarii ti je pokazao tačno rešenje. Razlog što ti kod iz prvog primera nije radio je što si pozvao funkciju rightArrowSlide umesto da je samo proslediš kao argument.

Dakle, rightArrowSlide() poziva funkciju, dok rightArrowSlide vraća funkciju. Ovo možeš da isprobaš i u konzoli:

Ko je trenutno na forumu
 

Ukupno su 937 korisnika na forumu :: 28 registrovanih, 2 sakrivenih i 907 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Aleksa 3215, babaroga, bojank, bufanje, cenejac111, cikadeda, Dannyboy, Duh sa sekirom, hyla, ILGromovnik, Istman, kikisp, Kubovac, kunktator, kuntalo, Lieutenant, Marko Marković, milenko crazy north, milos.cbr, Oscar, procesor, proka89, raketaš, raptorsi, ruger357, Sirius, Snorks, vukovi