Mangler hjælp til opgave i JavaScript

Tags:    javascript json jquery

Jeg er studerende og har fået stillet denne opgave og jeg synes den virker svær og har brug for hjælp til at lave den/komme i gang.
Jeg vælger ikke at bruge jQuery, og den JSON-fil jeg skal bruge ligger på en lukket hjemmeside, men den er vel ikke så vigtig.
Mit spørgsmål er, meget generelt, hvordan jeg skal gribe det hele an, men også hvordan jeg anvender denne JSON fil og hvordan min kode i javascript skal se ud.
Håber I kan hjælpe mig :)

• Der skal laves en simuleret musikafspiller i HTML/CSS og javascript/jQuery som kører i en 1 webbrowser på en enkelt hjemmeside (siglepage app). ?

!

• Tag udgangspunkt i JSON-?len som ?ndes på *slettet* og opbyg en passende model for et CD-objekt og et TRACK-objekt, således at en CD kan indeholde en mængde TRACKS?

!

• Opret CD- og TRACK-objekter automatisk ud fra JSON-?len. JSON-?len skal ligge eksternt i projektet og må ikke sættes ind som en variabel i JavaScript.?

!

• Det skal være muligt at vælge CD’er til afspilning, ud fra en liste af CD’er på siden, der viser hvilke CD’er der er til rådighed.?

!

• Man skal kunne søge efter et bestemt track ud fra enten navnet på track’et eller ud fra kunstneren. En sådan søgning skal vise en liste med tracks der opfylder kriterierne, og herfra skal man kunne vælge hvilke der skal afspilles.?

!

• Der skal vises en afspilningsliste, der viser de tracks der skal afspilles. Der skal kunne tilføjes både hele CD’er og enkelte tracks til listen. Det skal være muligt at rydde listen.?

!

• Der skal opbygges en brugergrænse?ade med knapper ?g. knapper som man ville kunne ?nde på en musikafspiller:!

• Play - der starter en “afspilning ”!2

• Stop - der stopper en “afspilning”!

• Frem - der“afspiller” næste track fra listen!

• Tilbage - der “afspiller” forrige track fra listen!

• Shuf?e - der blander afspilningslisten!

• Felt, der viser en liste over tracks der er sat til afspilning?

!

• Al formatering skal ligge i en ekstern CSS-?l!

!

• Det er op til eksaminanden hvor og om der anvendes jQuery i projektet!

!


Simuleret betyder at der ikke skal afspilles egentlige musik?ler, men der skal blot vises titlen, fra 1 et TRACK-objekt i projektet, på skærmen. Musikafspilleren skal derfor heller ikke selv skifte track, dette gøres med frem/tilbage knapperne.




5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 30 karma
Sorter efter stemmer Sorter efter dato
Vi skal ikke lave dine lektier for dig, og det kunne lyde som om din basale javascript-viden måske ikke er så høj.

Ikke desto mindre vil jeg gerne give et par fifs med på vejen.

Først og fremmest, for at åbne filer i javascript skal de være tilgængelige via web, dvs du skal kunne indtaste en url til dem og se dem. Det kan du så gøre på kode-niveau i Javascript med et AJAX*-kald. Mere specifikt skal du have fat i et xmlhttprequest objekt i Javascript. På MDN kan du læse lidt om, hvordan man gør det:

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

Prøv eventuelt at lave nogle simple tests af at lave AJAX-kald til flade .txt filer og udskriv deres indhold med fx alert()-funktionen.

Når du har det på plads skal du have dataene konverteret fra rå json-text til javascript-objekter. Nogle browsere har en indbygget JSON.parse metode du kan bruge: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse -- hvis din browser ikke har denne funktion kan du finde JSON-librariet her og include det i din html før din øvrige javascrip: https://github.com/douglascrockford/JSON-js

Derefter skal du have styr på at traverse dataene du får fra json-filen. Det gør du som et hvert andet javascript-objekt, fx:

Fold kodeboks ind/udKode 

hvis altså din json har dén struktur.

Prøv eventuelt at lave nogle simple tests med nogle javascript-objekter du selv definerer direkte i koden:

Fold kodeboks ind/udKode 


Når du har det på plads skal du bygge html op ud fra de data der er i json'en. Som begynder vil jeg nok anbefale at du bruger .innerHTML metoden til at lægge html ind i andre elementer, fx dit bodytag eller et en container, som du kan hente via document.querySelector og document.querySelectorAll: https://developer.mozilla.org/en-US/docs/Web/API/document.querySelector

Derved vil du kunne bygge en afspilningsliste. Så er det "bare" et spørgsmål om at lave nogle eventlisteners på click-bare frem og tilbage knapper, der markerer det næste track i listen du har bygget. Det kan du gøre med addEventListener() metoden på de fleste elementer: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener

Vær opmærksom på at i mange af disse tilfælde er det ikke alle browsere, disse funktioner fungerer på. Med fx jQuery er der taget højde for det og lavet abstraktionslag over, der udligner forskellene på browserne, men det er fornuftigt nok at starte med at lære det reelle, underliggende Javascript. Jeg forestiller mig, at det ikke er et krav at løsningen skal fungere på alle, navnligt ældre, browsere.

God arbejdslyst!

*="Asynchronous Javascript And XML", selvom XML-delen ikke bliver brugt så meget mere efter JSON er blevet populært.



Indlæg senest redigeret d. 24.02.2014 18:06 af Bruger #8223
No worries mate. At stemme på svaret er nok til at godkende det og give karma, så der er ikke mere du skal spekulere på der.

Jeg har redigeret svaret for at tilføje en note om hvordan du så behandler JSON-dataene og får dem lavet om til native Javascript objekter.



Wow tusind tak for tiden og hjælpen :D Det var præcist sådan et svar jeg ledte efter. Ikke fordi jeg ville få folk til at besvare mine opgaver, men blot for at forstå hvad det gik ud på. Skal jeg bare stemme dit svar op eller kan jeg give dig karma på andre måder? Er ny her..
Igen. Tak :D



Hvis du rigtigt vil score points så anvender du AngularJS ... Det er avanceret men hoold nu kæft det er sejt ;)



Okay nu har jeg fået min liste til at virke med JSON-filen, men mangler "bare" afspilningslisten. Jeg har lavet en rimelig ringe søgefunktion og den mangler at blive gjort færdig, men det jeg har ser sådan ud: http://omai.dk/Venners%20kode/Nikolaj%20Jenning%20Hansen/
Men nu forestiller jeg mig at jeg skal gøre sådan at jeg kan trykke på nogle cd'er/tracks, som vil åbne en "musikafspiller", hvor jeg kan tilføje/rydde sange og shuffle osv. Men jeg har ingen anelse om, hvordan jeg gør dette. nogle forslag? :)



t