Keresés

Új hozzászólás Aktív témák

  • adam_
    senior tag

    Tudok németül, szóval nekem nem gond, de annak, aki nem tud, idegesítő lehet. Mondjuk nekem is idegesítő még úgy is, hogy értem, mi van odaírva. :DDD Az is szokott zavarni, ha valaki magyarul kódol (lehet sznobizmusnak tekinteni, de akkor is az az elfogadott szokás, hogy angolul kódolunk).

    Egyrészt jsFiddle-ön át kell kattintani "No wrap - in <head>"-re vagy "No wrap - in <body>"-ra a bal fölső panelnél. Ez azt határozza meg, hogy hova fogja beágyazni a JavaScript-kódot a <script>-tagekkel. Ha megnézed a böngésző webfejlesztő eszközeivel a generált kódot, akkor ezt pontosan tudod követni. De múltkor pontosan ugyanez volt, ami miatt nem működött nálad. :)

    Másrészt nem perzisztens módon tárolod az adatokat, így érthető, hogy a lapújrafrissülések esetén minden elvész.
    Tárolhatnád mondjuk sessionStorage-ben vagy localStorage-ben (hogy melyikben, az felhasználásfüggő) a kosár tartalmát, itt egy egyszerű példa:
    http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage/2010948#2010948

    Harmadrészt semmivel nem akadályoztad meg, hogy lapújrafrissülés történjen azonnal az alert után, akármi is volt az eredmény, például ha tök üresen hagyom a mezőket, kapok figyelmeztetést, de ettől még megköszönöd szépen a rendelést, aztán el is mennek az adatok szerveroldalra.
    Itt ráadásul tök felesleges minden alkalommal alerttel megköszönni a rendelést, hiszen még meg sem rendeltem, csak kosárba pakoltam.

    A kosárba pakolás során egy jó UI esetén nem frissül újra az egész oldal, mert tök felesleges. Az egyéni döntés kérdése, hogy a kosár tartalmát el akarod-e küldeni szerveroldalra is, vagy csak kliensoldalon tárolod. A szerveroldal mellett az szól, hogy eltárolhatod későbbre is a kosárba pakolt tartalmat, és akárhol máshol jelentkezik be, akkor megint előkotorható a korábbi kosártartalom, hogy mondjuk később folytatni tudja a vásárlást. De legtöbbször csupán kliensoldalon intézik el az egész kosárba pakolgatást, az adatok tárolását, például az előbb említett módszerekkel.
    Az űrlap elküldését pedig az eseménykezelőben kell megakadályozni. Például event.preventDefault() segítségével.
    A HTML-kódba bedrótozott onclick-attribútumokat és társait pedig kerülni kell, szépen szeparáltan legyen a JavaScript-kódban az eseménykezelés, a kettő legyen jól elválasztva. .addEventListener() segítségével tudsz hozzáadni egy adott elemhez eseménykezelőt. Példa (a többi hibát nem javítottam, csak ezt szemléltetem!): http://jsfiddle.net/r4s0ef87/2/

    Másrészt nem perzisztens módon tárolod az adatokat, így érthető, hogy a lapújrafrissülések esetén minden elvész.
    Tárolhatnád mondjuk sessionStorage-ben vagy localStorage-ben (hogy melyikben, az felhasználásfüggő) a kosár tartalmát

    A jelenlegi tanárommal erről beszélgettem, szó volt a local/sessionStorage lehetőségéről is. Azt mondta, hogy elsősorban ezek a módszerek az IE-nél nem alkalmazhatóak, ezért jobb módszer lehet a cookies az adatok tárolására. Próbálkoztam [link], hogy a végén kikalkulált értékeket átadom egy másik funkcióba cookiesba, közvetlen akkor amikor a user elhagyja az oldalt, így amikor majd később visszatér az oldalra, megmaradnak a kosárba pakolt dolgok, ha még nem véglegesítette a vásárlást. Egyenlőre a JSFiddlebe kikommenteltem a legvégéről a cookiesos részt, mert egyáltalán nem megy sajnos. Egyenlőre csak rögzíteni akarom az egyik funkcióba a kijött értékeket a másik funkcióba, a cookiekba, majd egy másik funkció törölni is tudja azokat (tervezek még egy harmadikat is, ami visszaolvassa majd, és ezt a három funkciónalítást mondjuk egy objektumba szeretném behelyezni majd a legvégén..) Rátudnál vezetni, hogy mit rontok el, egyáltalán ez a fajta megoldás is jó lehet/lenne? Szóval elsőkörben tanulásképp kliensoldalon szeretném megoldani az adatok eltárolását, majd ha már megy a JS jobban, akkor szeretnék szerveroldali tárolással is foglalkozni.

    A kosárba pakolás során egy jó UI esetén nem frissül újra az egész oldal, mert tök felesleges.

    Ezt nem teljesen értem, ezt "kódügyileg" hogyan képzeljem el? :U

    HTML-kódba bedrótozott onclick-attribútumokat és társait pedig kerülni kell, szépen szeparáltan legyen a JavaScript-kódban az eseménykezelés, a kettő legyen jól elválasztva. .addEventListener() segítségével tudsz hozzáadni egy adott elemhez eseménykezelőt.

    Most már a HTML kódom teljesen JS mentes, ahogy kell, viszont magát a JS kódon még egyszer átfutnál, és megmondanád, hogy te mit változtatnál rajta (elrendezés, vagy az egész felépítettsége), mert sajnos még erre nem éreztem rá igazán, hogy mikor szép/jó egy komplett szkript. Talán még jóópár projektet kell majd látnom ahhoz, hogy ezt érezzem. Mert sok kis apró dolgot külön funkciónalításokba (ha néha tákolmány is), de sikerül felépítenem, viszont így komplexbe a végén még van mit csiszolni rajta. Gondolok itt például olyanokra, hogy a változókat mikor deklarálom jól (etc. lokálisan, vagy publikusan), mindenre hozok létre külön funkciókat (bár lehetne egy komplex objektumba is ezeket belepakolni..stb..)

    Még ezekhez jóó pár hónapot kell gyakorolnom gondolom, hogy átérezzem, mert minél több nüansznyi dolgot tudok, annál több mindent akarok belepakolni egy projektbe, és persze annál bonyolultabb perpill számomra. :U

    Húh ez sok volt, de kíváncsi vagyok a véleményedre. :)

    Ádám

Új hozzászólás Aktív témák