Keresés

Hirdetés

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

  • Jim-Y

    veterán

    válasz Zedz #3494 üzenetére

    Szia, én ezt így csinálnám,
    http://jsfiddle.net/Jim_Y/mqJa9/

    var myForm = new Array("tip","fname","famname");
    // mi az, hogy myForm.value? itt mit akartál?
    if (isNaN(myForm.value))
    {
    var element=document.getElementById("error");
    element.innerHTML="All fields are required!";
    form.tip.focus();
    return false;
    }

    minek return false? semmi értelme ...

  • spammer

    veterán

    válasz Zedz #3603 üzenetére

    Ha kiszeded a jquery popupos cuccot, akkor elküldi rendesen az adatokat?

    „A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

  • spammer

    veterán

    válasz Zedz #3605 üzenetére

    Miért rakod a href-be az inputot? Miért nem a submit gombra hívod meg a jqueryt? Pl. click

    Vagy a formra, pl. submit

    [ Szerkesztve ]

    „A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

  • martonx

    veterán

    válasz Zedz #3603 üzenetére

    Annyi azért ugye megvan, hogy a javascript kliens oldalon fut, a PHP meg szerver oldalon? És hogy a kliens oldal HTTP (mondjuk AJAX) hívásokkal kommunikál a szerver oldallal?

    Én kérek elnézést!

  • Sk8erPeter

    nagyúr

    válasz Zedz #3607 üzenetére

    Nem lenne rossz, ha legalább egy karakternyi JavaScript-kódot látnánk, ha már ebben kérsz útmutatást. :)

    Egyébként amit spammer említett, az teljesen jogos kérdés, nagyon ronda és helytelen az az <a> tagek közé tett input-mező.

    Sk8erPeter

  • Jim-Y

    veterán

    válasz Zedz #3610 üzenetére

    Mi lenne ha submit esetén ezzel nyitnád meg a modal-t, és nem a hülyebiztos módon?!

    $('#myButton').click(function(e) {
    e.preventDefault();
    $('#myModal').reveal();
    });

    Egyébként, azért nekem még mindig hiányzik egy kódrészlet a TE kódodból, mert nyílván ezt a sample-t úgy tették fel, hogy ez működik, ha ezt beilleszted a saját kódodba, akkor nem emiatt nem fog működni, hanem amiatt, mert vagy valamit rosszul csináltál, vagy valamit a te környezetedben máshogy kéne csinálni.

    [ Szerkesztve ]

  • Sk8erPeter

    nagyúr

    válasz Zedz #3610 üzenetére

    Ennek a pluginnek köze nincs a szerver felé történő adatküldéshez. Ez csak feldob egy modális ablakot. Mint a jQuery UI Dialog, aminek egyébként kissé bőségesebb a dokumentációja.
    A form submit eseménykezelésébe, vagy legalább a submit gomb click eseménykezelőjére kellene kötni az adatküldést a szerver felé.

    Sk8erPeter

  • martonx

    veterán

    válasz Zedz #3750 üzenetére

    Miért akarsz újratöltetni egy szkriptet? :F

    Én kérek elnézést!

  • Jim-Y

    veterán

    válasz Zedz #3932 üzenetére

    Több gond is van vele, egyrészt $(this) és nem $('this'), mert utóbbi esetben a DOM this tageket szűrnéd ki vele.
    Másrészt amit meg akarsz csinálni azt nem így kell, mert a a $(this) ebben a kontextusban az oldalon található input mezőket adja vissza.
    A $(this).length == 0 akkor igaz, ha az oldalon nincs <input>.

    Helyesen: [link]

    Magyarázat:
    - a this mindig a hívó objektumra utal. Ebben az esetben amire a focusout-ot meghívtuk. Mire hívtuk? $('input')-ra ami egy olyan objektum ami az oldal összes input mezejét tartalmazza.
    - a $(this) a this objektumból csinál egy jquery objektumot, így a $(this)-re meghívhatjuk a jquery-s függvényeket. Mint a példában: $(this).after("<p>Empty this</p>");
    Az after egy jquery metódus, jquery objektumokon van értelmezve. this.after() hibás!
    - a this.value helyett írhattunk volna $(this).val() -t is, ugyanazt az eredményt kapjuk. Ellenben, míg a value az input element beépített property-je, addig a val() egy jquery-s függvény, valószínűleg a val()-is a value-t kérdezi le. Annyi különbség mégis van, hogy a val() egy jquery objektummal tér vissza, tehát működik rajta a method chaining.

    [ Szerkesztve ]

  • Sk8erPeter

    nagyúr

    válasz Zedz #4050 üzenetére

    Pedig kell az index :) Érdemes használnod a debuggoláshoz hasznos gyorseszközöket, nyisd meg a használt böngésző fejlesztőpaneljét (Ctrl+Shift+I vagy F12), kattints a Console fülre, és írasd ki az aktuális elemet, hogy megtudd, mi van benne, például:

    console.log("Documents named 'x': ", document.getElementsByName("x"));

    http://jsfiddle.net/4u2Jv/1/

    Sk8erPeter

  • Sk8erPeter

    nagyúr

    válasz Zedz #4052 üzenetére

    A click eseményt - azért lett "e", mert így rövidítettem az "event" szót, de átnevezhetnéd azt a paramétert "kiskutyafule" változónévre is. Érdemes ezt is kiíratnod konzolra - csak tesztelés erejéig, ilyenek ne maradjanak benne az éles kódban!! -, hogy lásd, mi van benne:
    console.log('event: ', e);
    Hasznos tud lenni, ha ismered a tartalmát: le tudod kérni például a klikkelés koordinátáit, a célzott elemet (a jelen példában e.target, ennek aztán további attribútumai vannak, mint pl. ha lenne id-je az adott elemnek, akkor e.target.id, a "name" attribútum az e.target.name segítségével, a "value" pedig az e.target.value-val érhető el, le tudod kérni a szülőelemet az e.target.parentNode-dal, és így tovább), és egyebeket.

    Sk8erPeter

  • Sk8erPeter

    nagyúr

    válasz Zedz #4056 üzenetére

    Nem kötelező, de sokszor hasznos, ha pl. meg akarod tudni az általam előbb említett paramétereket... Azért írtam a példákat, mert azt gondoltam, abból leszűröd a hasznosságát. Annak a mondatodnak nem sok értelme van ennek kapcsán, hogy "a DOM-ból szedi ki".

    Sk8erPeter

  • trisztan94

    őstag

    válasz Zedz #4104 üzenetére

    Nagyon nem érdemes. Maximum, ha Win 8/RT-re akarsz, ott viszonylag jó.

    Vagyis hát igazából attól függ. Ha nem natív nyelven fejlesztesz egy OS-re, akkor az lassabb lesz mindenképp (tehát windows esetén C++, C#, OSX esetén Objective C), mert van egy wrapper körülötte ami végül lefordítja arra (asszem, javítsatok ki, ha tévedek). Akkor lehet jó választás, ha Cross Platform appokat akarsz fejleszteni (lásd: adobe brackets), amit könnyű pluginezni.
    De a brackets pl. pont a fent említett dolgok miatt nagyon be tud lassulni.

    [ Szerkesztve ]

    https://heureka-kreativ.hu

  • Sk8erPeter

    nagyúr

    válasz Zedz #4104 üzenetére

    "Hallottam arról, hogy lehetőség van asztali alkalmazást fejleszteni HTML, CSS illetve Javascript segítségével"
    Mi a célod? Ilyenkor azonnal felmerül a kérdés, hogy vajon biztos a jó nyelvekhez+eszközökhöz akarsz-e nyúlni.

    Sk8erPeter

  • Karma

    félisten

    válasz Zedz #4108 üzenetére

    Nem csak a Brackets, hanem például a TileMill térképszerkesztő is tisztán Node.js alkalmazás. Ez utóbbi is open source, meg lehet nézni hogy mire épít.

    Én egyébként a DeskShellről és a node-webkitről hallottam eddig.

    (#4106) Sk8erPeter: Tényleg nagyon jó cikk, köszi :)

    Egyébként az ECMAScript 6 terjedéséről mit lehet tudni? Azt olvastam, hogy a Node a 0.11.x-es ágon már támogatja, de stabilizálódni még nem akar... Pedig a generátorok nagyon odavernek.

    Szívesen használnám már gyakorlatban például a co-t.

    [ Szerkesztve ]

    “All nothings are not equal.”

  • martonx

    veterán

    válasz Zedz #4104 üzenetére

    .hta kiterjesztéssel valóban lehetőség van windows desktop alkalmazás fejlesztésére.
    Amit a telepített IE motor tud, azt a .hta alkalmazásod is tudni fogja. Elég jó dolog.
    Win8 vonalon pedig metro alkalmazást is tudsz HTML5-tel csinálni.

    Én kérek elnézést!

  • trisztan94

    őstag

    válasz Zedz #4126 üzenetére

    Nem lehet, hogy még nem töltötte be a képet, de már le akarja kérni az adatait? Próbáld az onLoad()-ba rakni a getImageData()-t és az alatta lévőt.

    https://heureka-kreativ.hu

  • Jim-Y

    veterán

    válasz Zedz #4222 üzenetére

    Ez egy IIFE (immediately invoked function expression). Bővebben erről itt olvashatsz. Ben Alman - IIFE

    Azért jó, mert
    1: csinálsz egy függvényt, ezzel ugye egyből egy új variable environmentet
    2: rögtön meg is hívod

    Ami az iffy-n belül van az nem "szennyezi" a globális névteret. A pattern segítségével le is tudjuk védeni az egyes könyvtárakat. Például a következő kódban a jQuery object-re $-ként tudunk hivatkozni anélkül, hogy félnünk kéne, hogy egy másik 3rd party library közben "felüldefiniálná" a "$" jelet.

    Például:

    (function($) {

    }(jQuery));

    Az pedig, hogy miért jobb nem szennyezni a globális névteret, elsőszámű good-habit. Ennek utána tudsz olvasni neten.

    Egyébként erre épül nem egy pattern, például a self revealing module pattern is. Erről itt olvashatsz bővebben: Addy Osmani - Design Patterns #revealingmodulepattern

    [ Szerkesztve ]

  • Jim-Y

    veterán

    válasz Zedz #4224 üzenetére

    Élő példa, hogy mire jó még:

    Találós kérdés, mit ír ki ez a program, anélkül, hogy kipróbálnád?!

    <div id="container">Katt ide</div>
    ########################################
    var cont = document.querySelector('#container');

    function test() {
    for (var i = 1; i < 6; ++i) {
    cont.addEventListener('click', function () {
    console.log(i);
    });
    }

    i = 10;
    }
    test();

    [ Szerkesztve ]

  • Jim-Y

    veterán

    válasz Zedz #4226 üzenetére

    Na, akkor legalább volt értelme a példának.
    Ezt írja a konzolra:

    Vagyis
    10
    10
    10
    10
    10

    Magyarázat: (ha esetleg valamit rosszul írnék, akkor javítsatok ki többiek, nem szeretném ha valamit az én hibámból jegyezne meg rosszul :))

    1:
    for (var i = 1; i < 6; ++i) {
    //...
    }

    Ezt az interpreter így értelmezi:

    var i = undefined;
    for(i = 1; i < 6; ++i) {
    //...
    }

    Tehát az i ciklusváltozót felemeli a függvény törzsének elejére, majd undefined-ként deklarálja.

    2:
    cont.addEventListener('click', function () {
    console.log(i);
    });

    Minden click eseményre a cont objektumon/elementen regisztrál egy névtelen függvényt. A lényeges momentum, hogy minden függvény javascriptben látja/tartalmazza az őt körülvevő függvények kontextusát.

    function a() {
    var i = 10;
    function b() {
    var j = function() { return 11; };
    function c() {
    console.log(i); // 10
    console.log(j()); //11
    }
    c();
    }
    b();
    }
    a();

    Az eredeti példánál maradva az anonim függvény látja az őt körülvevő test függvény kontextusát, így az i változót is. Az addEventListener függvényel olyan működést definiálunk, ami valamikor a jövőben fog lezajlani (amikor klikkelünk az elemre), ezért a ciklus már rég végez mire mi az elemre klikkelünk.

    3:
    amikor végül rányomunk a div-re, az i már a ciklus végén 6, majd egy újabb értékadással i = 10. Ne felejtsük, hogy az összes anonim függvény "cipeli" magával a test függvény kontextusát amiben az i változóhoz már a 10 érték van rendelve, ezért fog 5 x 10-et kiírni a program a konzolra.

    A megoldás az lehet, ha minden anonim függvénynek/hez egy új kontextus-t rendelünk, amiben az i változó a ciklusban éppen aktuális értéken fog szerepelni.

    Példa és megoldás:

    var cont = document.querySelector('#container');

    function test() {
    for (var i = 1; i < 6; ++i) {

    (function (i) {
    cont.addEventListener('click', function () {
    console.log(i);
    });
    }(i));
    }

    i = 10;
    }
    test();

    A (function() { .. }()); egy új kontextust generál amibe elmentjük az i ciklusváltozó aktuális értékét így az mindig fix marad.

    üdv

    [ Szerkesztve ]

  • martonx

    veterán

    válasz Zedz #4342 üzenetére

    Single page application-ökhöz. Eddig kettő nagyobb ilyen projekten dolgoztam. Egy CRM rendszeren, amit knockout-tal csináltunk, és egy média library-s, rendelő oldalon ami angularjs-el készült (mielőtt páran felnyögnének, ez egy elég sajátságos terület, elég sajátságos megoldásokkal, így nem volt kérdés, hogy mindenből custom-ot kellett írnunk).
    Kisebb ko-s projektjeim voltak még, mint pl. online repülőjegy foglaló rendszer (ezt ide is tudom linkelni, mert ez publikus link), ahol a járat keresés résznél mindent a knockout vezérel, illetve per pillanat egy pénzügyi szektoros fejlesztésen dolgozok, ami szintén publikus lesz, ha elkészül.

    Én kérek elnézést!

  • Jim-Y

    veterán

    válasz Zedz #4342 üzenetére

    En most egy olyan projekten dolgozok, ahol 382 JS file van a kliens oldalon ez ~170.000 javascript kodsort jelent. Nem hasznalunk frameworkot, csak libraryket.

  • Jim-Y

    veterán

    válasz Zedz #4345 üzenetére

    Kozben rajottem, hogy ebbe beleszamoltam a dependenciakat is, igy azert jocskan lecsokkent a sorszam, de meg igy is 100K folott van. Amugy nem tudom, hogy ez JS-ben mennyinek szamit, szerintem kozepesnek. Atlatni, hasznalunk RequireJS-t, igy azert konnyebb. Hogy erted, hogy "miben dolgozik egy kód"?

  • martonx

    veterán

    válasz Zedz #4345 üzenetére

    1. kód szervezésben. Bevallom szeretem az MVC / MVVM kód szervezést. Amikor jön egy json adat, az már megy is bele egy jó kis modellbe, és ezt bindolom a megfelelő helyekre.
    2. a modellek változása realtime megjelenik a böngészőben, átvezetődik más modelleken, stb...
    3. nagyon szépen lehet velük template-elni, pl. valamilyen lista elemeket kell generálnod a kapott jsonból. Ezt e frameworkök nélkül jobbára kénytelen vagy elkezdeni js kóddal foreach-ekkel megírni, és összerakosgatni string részletekből. Ha láttál már ilyen js kódot, akkor érteni fogod, hogy mire gondolok.
    4. szépen el lehet velük szeparálni a különböző kód rétegeket (html - js és js-en belül a class-ok, service-ek, controller-ek)
    5. a html-eidet is szépen kis darabokra tudod szedni, ezáltal sokkal átláthatóbb lesz a kódod
    6. segítenek a routingban, DI-ban (ez mondjuk csak az angularjs-re igaz, aminek viszont a DI-át százszor is elátkoztam, szóval ez azért nem mindig előny). Knockouthoz meg azt húzol be pluszban, amit jól esik pl. pagejs + requirejs.
    7. összességében, jóval kisebb kód mennyiséget eredményeznek, lásd Jim-Y esetét. Mondjuk angular-t telefonra a gyatra teljesítménye miatt én se mernék bevállalni, de egy 30Kb-os knockout-ot már volt, hogy használtam telefonon, és tök szépen, gyorsan tette a dolgát, pedig ez még az okostelefonok őskorában volt, amikor 1 magos 600Mhz-ez szutykokon futottak a mobilos böngészők első verziói.

    Mindezek ellenére abszolút nem azt mondom, hogy akkor most mindenki kezdjen el valamilyen js framework-öt használni, hiszem hogy a webes projektek jelentős részének nincs rájuk szüksége. De egy picit is jelentősebb projektet én már nem kezdenék el knockoutjs (rosszabb esetben angularjs) nélkül.

    Én kérek elnézést!

  • martonx

    veterán

    válasz Zedz #4355 üzenetére

    A Grunt-tal a kliens oldali framework-öd build-jét tudod automatizálni (pl. html-ek minifikálása, js-ek egybegyúrása, minifikálása, css-ek, stb...). Mint ASP.NET fejlesztő bevallom még sose használtam, mert az ASP.NET - Visual Studio alapból nagyon erős ezekben.
    Nodejs-es, PHP-s világban viszont elég elterjedt.

    Én kérek elnézést!

  • Jim-Y

    veterán

    válasz Zedz #4355 üzenetére

    Szia

    Ami repetitív munka arra nagy valószínűséggel van grunt plugin. Könnyű konfigurálni, és jó pár fejlesztőkörnyezet is támogatja.

    Mire használatos?

    Amire szinte mindig:

    * Lintelés, például jshint.
    * Minifikálás, például uglify
    * Unit tesztek automatikus futtatására, pl Jasmine, vagy Mocha, vagy QUnit
    * LiveReload, pl grunt-watch. Ez utóbbi azt jelenti, hogy ha előre beállított fájlokat szerkesztesz, és elmented őket, akkor előre beállított taskok automatikusan lefutnak. Például ha a core *.js fájlaidat szerkeszted, akkor automatikusan lefut a lintelés, vagy ha browserify-t használasz akkor a bundling stb...
    * Konkatenálás

    És akkor van még ami ritkábban:

    * https://github.com/gruntjs/grunt-contrib

    A JavaScriptes munka már rég nem csak annyiból áll, hogy megnyitsz szerkesztővel egy js fájlt és írsz pár függvényt ami csinál valamit a dommal, esetleg behúzod a jQuery-t.. Nagyon jó ökoszisztéma alakult ki az évek alatt, nagyon hasznos eszközökkel amik megkönnyítik a munkát.

    Egyrészt ami régen nem volt, és most van, jó IDE-k. Jó build toolok, szerver oldali js környezet, npm, bower, browserify...

    [ Szerkesztve ]

  • martonx

    veterán

    válasz Zedz #4366 üzenetére

    Ugyanarra jók. Mindig érdekeltek, de sose jutottam el oda, hogy érdemben kipróbáljam őket. Igaziból a knockoutjs-el 100%-ban elégedett vagyok, az angularjs-t kipróbáltam a hype miatt. Nem hiszem, hogy érdemben kiderülhetne bármelyik más frameworkről is, hogy sokkal jobbat tudna mint ezek.

    Én kérek elnézést!

  • PumpkinSeed

    addikt

    válasz Zedz #4382 üzenetére

    Hát elvben JS-nek se szabadna benne lennie, mert HTML CSS-t tanítanak csak első félévben. :)

    "Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán

  • martonx

    veterán

    válasz Zedz #4372 üzenetére

    1. a preventDefault-ot teljsen rosszul használod. Csak 1 kell belőle, és az legfelülre.
    2. nem lehetne jsfiddle-re, hogy esetleg ki is javítsuk? Bár nekem bőven jó az az 1-es pont hintje alapján kijavítod magad ;]

    A kódod alapján adódik a kérdés, hogy tudod-e, mit csinál a preventDefault? Ha a válaszod igen lenne erre, akkor kérlek először olvass utána, hogy mit csinál, és értsd is meg, hogy mit csinál.

    Én kérek elnézést!

  • martonx

    veterán

    válasz Zedz #4385 üzenetére

    "Én eddig csak a submit megakadályozására használtam."

    No jó, akkor játszuk így apró lépésenként. Szerinted mit akadályoz meg a - példa kedvéért egy submit eseményen - a preventDefault?

    Én kérek elnézést!

  • Jim-Y

    veterán

    válasz Zedz #4411 üzenetére

    TL;DR
    A lényeg, hogy ezek nem számítanak must-have tudásnak, de mindenképp érdemes őket elolvasni, tanulmányozni.

    Amiket a könyvben láttál, azokat nem kell mind készség szintjén tudni, a legtöbb amúgy is csak elméleti pattern, production kódban ritkán látsz olyanokat. De van pár amiket érdemes ismerni, mert azokat igenis használják élesben, és sok framework, library azokra épít.

    A module pattern talán a legismertebb pattern, a revealing module pattern szintúgy, szerintem ismerni érdemes még a singleton pattern-t, a factory patternt, és egyszer már használtam a prototype pattern final változatának egyik változatát is :D

    var beget = (function () {

    function F() {}

    return function ( proto ) {
    F.prototype = proto;
    return new F();
    };
    })();

    Tudtam, hogy nagyjából mit szeretnék csinálni (egy jQuery szerű libet létrehozni, nyílván minimal-t, de úgy hogy myLib(selector) adjon adja vissza a könyvtáramat.), és megnyitottam a pattern könyvet és kerestem valamit amire rá tudtam húzniaz elképzelésemet. Ez nálam a factory pattern volt, legalábbis az adta az ötletet,

    Kb így kell elképzelni, hogy mi lett belőle

    http://jsfiddle.net/Jim_Y/h7bjn7ko/

    [ Szerkesztve ]

  • martonx

    veterán

    válasz Zedz #4475 üzenetére

    Itt valami félreértés van. Ezeket abszolút nem kötelező használni. Abszolút feladat függő, hogy érdemes-e, és ha igen, melyeket, milyen kombinációban stb...

    Én kérek elnézést!

  • martonx

    veterán

    válasz Zedz #4477 üzenetére

    Én meg azt mondom, hogy abszolút nem ilyen egyértelmű. Simán lehet olyan SPA, amihez semmi ilyesmi nem kell, miközben simán lehet olyan nem SPA, amihez meg jó ha az ember használ valamilyen js fw-t.

    Én kérek elnézést!

  • martonx

    veterán

    válasz Zedz #4479 üzenetére

    Figyi, persze ez nem rossz, de tényleg minden azon múlik, hogy melyik megközelítésnek van több előnye?
    Behúzni azért egy angularjs-t mondjuk, hogy pár oldalnyi portálnál oldalanként 3 mezőt data-bindoljál abszolút overkill.
    Ugyanakkor szerver oldalon kigeneráltatni jó nagy, komplex agyon data-bindolt, ha ide kattintok, amott változzon page-eket, majd fw nélkül elkezdeni köré írni a több ezer sornyi js-t, meg szintén overkill.

    Önmagában egy SPA-hoz nem kell semmiféle js fw, elég lehet egy szimpla navigációs lib, mint pl. a pagejs

    Én kérek elnézést!

  • fordfairlane

    veterán

    válasz Zedz #4477 üzenetére

    "SPA"-t lehet akár a Jquery API .load() metódussal is csinálni, de ha tanulni is akarsz, akkor az Angular nem rossz választás, már csak az ismertsége miatt is.

    x gon' give it to ya

  • Jim-Y

    veterán

    válasz Zedz #4481 üzenetére

    Mostanaban az Angular + Ember megy nagyon. Szemely szerint csak kicsit ismerem oket, de nem igazan tetszik egyik sem, jelenleg a React+Flux -al foglalkozom ami szerintem, vag legalabbis nekem, jobb :)

    Ja igen, csak azt nem irtam le, hogy ezt miert irtam le, szv ha ezek kozul valamelyikkel probalkozol akkor mar nem jarsz rosszul ugyanis mindharomra van kereslet. Ugy erzem, hogy a harom kozul az Angular a legkiforrottabb, az Ember az uj Angular, a ReactFlux pedig egy teljesen mas megkozelites, gyerekcipoben jar, de elegge igeretes :)

    [ Szerkesztve ]

  • martonx

    veterán

    válasz Zedz #4481 üzenetére

    Igen, én személy szerint a knockoutjs (data-binbding, moduláris, szervezett felépítés) + pagejs (routing) kombóra esküszök, de ahány fejlesztő annyi kedvelt kombó. Ez eléggé szubjektív.

    Én kérek elnézést!

  • Jim-Y

    veterán

    válasz Zedz #4587 üzenetére

    Nekem minimális tapasztalatom van vele. Pont egy hasonlóan bagatell feladat miatt, ahol nem akartam saját REST-et felhúzni a backend fölé.

    Szerintem tanulási céllal, vagy ha nem a backenden van a hangsúly, akkor nagyon jó. Van egy online könnyen kezelhető backended, és hozzá egy csomó REST endpointod, így megúszol egy csomó melót. BaaS.

    Saját interfésszel rendelkezik, de az is elég egyszerű. Az erőforrásokat egy url azonosítja. Pl nálam

    var Firebase = require('firebase');

    module.exports.REFS = {
    ROOT: new Firebase('https://***.firebaseio.com'),
    BOOKS: new Firebase('https://***.firebaseio.com/books'),
    USERS: new Firebase('https://***.firebaseio.com/users'),
    CATEGORIES: new Firebase('https://***.firebaseio.com/categories')
    };

    Majd ezeket queryzni is egyszerű:

    function _loadBooks(dfd) {
    REFS.BOOKS.once('value',
    _processBookResults.bind(null, dfd),
    _handleError.bind(null, dfd)
    );
    }

    Itt a books az egy JSON tömb, ha ezen belül akarsz módosítani valamit, akkor nem kell ahhoz külön még egy referencia (url), hanem

    var bookRef = REFS.BOOKS.child(bookIndex)

    Ezzel a kóddal megszereztünk egy referenciát a JSON tömb x. elemére ami egy book lesz, és például ezt updatelni is egyszerű:

    bookRef.update({
    borrower: userModel.get('id')
    });

    Szóval, nem sokat foglalkoztam vele eddig, de hallottam róla egy podcastban és ott pont kezdőknek és otthoni projekteknek ajánlották, így gondoltam kipróbálom és tényleg nem rossz, HA az ember helyén tudja kezelni, hogy mire való :)

  • Jim-Y

    veterán

    válasz Zedz #4601 üzenetére

    Hát, egy nagyobb nem koca projekten, szinte minden esetben előjönnek olyan repetitív folyamatok, amit a programozóknak időről időre meg kell tenniük. Egy projekt életciklusát alapul véve:

    * dependenciák letöltése, architektúrába integrálása stb..
    * az elkészült modul lintelése, hibák felderítése
    * tesztek futtatása
    * modulok összecsomagolása (bundling)
    * transpiling, például a következő nem stabil javascript verzióban megírt modulok stabil javascriptre buildelése
    * különböző transpile to js modulok js-re buildelése
    * az elkészült js csomag minifikálása
    * az elkészült html fájlok minifikálása
    * az elkészült css fájlok minifikálása
    * a css preprocesszorokban megírt stílusfájlok css-re konvertálása
    * fájlok másolása egyik helyről egy másik helyre, például production build másolása X helyre
    * satöbbi satöbbi satöbbi

    A lényeg, hogy ami repetitív könnyen automatizálható folyamat, azt nem kell kézzel megcsinálni hanem a build toolok megteszik helyettünk.

    Miért jó? Például nem mindegy, hogy a mobilról netezőknek mekkora méretű forrásfájl-t, forrásfájlokat kell letölteniük, mivel rendszerint a mobilról netezők mobilnettel rendelkeznek, ott meg nagyon nem mindegy, hogy 1mb az oldalad, vagy 100kb. -hasraütöttem-. Ezért célszerű minifikálni az elkészül applikációt amivel a méretet lehet csökkenteni. Ezt rendszerint nem egyszer fogod megcsinálni, hanem több ször, lehet, hogy sokszor.

    1. első esetben kézzel csinálod mindig, nem nehéz a parancs, kb vmi ilyen "uglify /lib/**/*.js" vagy "uglify build/bundle.js -o build/bundle.min.js" Nem nehéz ugye? De mi van ha már nem csak ezt szeretnéd csinálni, hanem még 5-6 hasonló parancsot futtatni. Olyankor ez már teher.
    2. második esetben használsz valamilyen build toolt, ahol taskokat definiálsz, és az előzőleg 5-6 különböző buildelési lépést egy paranccsal tudod kiadni, például "grunt dist"

    [ Szerkesztve ]

  • superboyka

    csendes tag

    válasz Zedz #4636 üzenetére

    bocsi most vettem észre van kod forás javitom

    ************** ÜNNEPEK ***************/
    function unnepek()
    {
    var unnep_idoszak = false;
    var today = new Date();
    var theoccasion1 = new Date(parseInt(today.getFullYear()), 12, 25);
    var mikulas_nap = new Date(parseInt(today.getFullYear()), 12, 6);
    if(parseInt(today.getMonth())==11)
    {
    var theoccasion2 = new Date(parseInt(today.getFullYear()+1), 1, 1);
    var theoccasion3 = new Date(parseInt(today.getFullYear()+1), 1, 8);
    }
    else
    {
    var theoccasion2 = new Date(parseInt(today.getFullYear()), 1, 1);
    var theoccasion3 = new Date(parseInt(today.getFullYear()), 1, 8);
    }
    mikulas_nap.setMonth(theoccasion1.getMonth()-1);
    theoccasion1.setMonth(theoccasion1.getMonth()-1);
    theoccasion2.setMonth(theoccasion2.getMonth()-1);
    theoccasion3.setMonth(theoccasion3.getMonth()-1);

    var one_day = 1000*60*60*24;
    calculate_mikulas_nap = Math.ceil((parseInt(mikulas_nap.getTime())-parseInt(today.getTime()))/(one_day));
    calculatediff1 = Math.ceil((parseInt(theoccasion1.getTime())-parseInt(today.getTime()))/(one_day));
    calculatediff2 = Math.ceil((parseInt(theoccasion2.getTime())-parseInt(today.getTime()))/(one_day));
    calculatediff3 = Math.ceil((parseInt(theoccasion3.getTime())-parseInt(today.getTime()))/(one_day));
    if (calculate_mikulas_nap < 0)
    {
    var nextyeartoday=new Date();
    nextyeartoday.setFullYear(today.getFullYear()+1);
    calculate_mikulas_nap = Math.ceil((nextyeartoday.getTime()-today.getTime())/(one_day)+calculate_mikulas_nap);
    }
    if (calculatediff1 < 0)
    {
    var nextyeartoday=new Date();
    nextyeartoday.setFullYear(today.getFullYear()+1);
    calculatediff1 = Math.ceil((nextyeartoday.getTime()-today.getTime())/(one_day)+calculatediff1);
    }
    if (calculatediff2 < 0)
    {
    var nextyeartoday=new Date();
    nextyeartoday.setFullYear(today.getFullYear()+1);
    calculatediff2 = Math.ceil((nextyeartoday.getTime()-today.getTime())/(one_day)+calculatediff2);
    }
    if (calculatediff3 < 0)
    {
    var nextyeartoday=new Date();
    nextyeartoday.setFullYear(today.getFullYear()+1);
    calculatediff3 = Math.ceil((nextyeartoday.getTime()-today.getTime())/(one_day)+calculatediff3);
    }
    //nov.22-tól dec.5-ig
    if ( (calculate_mikulas_nap>0) && (calculate_mikulas_nap<15) )
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Még '+calculate_mikulas_nap+' napot alszunk és jön a Mikulás...<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/jon_mikulas.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //dec.6-án
    if ( (calculate_mikulas_nap==0) )
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Gyerekek, megérkezett a Mikulás!<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/megjott_mikulas.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //dec.7-tól 24-ig
    if ((calculatediff1>0) && (calculatediff1<29) && (calculatediff2<26) && (calculatediff3<33))
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Még '+calculatediff1+' napot alszunk és itt a Karácsony...<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/jon_karacsony.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //dec.25-én és 26-án
    if (calculatediff1==0 || (calculatediff1>0 && calculatediff2==6))
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Boldog Karácsonyi Ünnepeket!<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/boldog-karacsonyt.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //dec.27-tol dec.31-ig
    if((calculatediff1>0) && (calculatediff2>0) && (calculatediff2!=6) && (calculatediff2<7) && (calculatediff3>0))
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Még '+calculatediff2+' napot alszunk és itt van Uj Év..<\/div>'+
    '<img src="infusions/nevunep_panel/kellemes_unnepek.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //jan.01-tol jan.07-ig
    if(((calculatediff1>0) && (calculatediff2==0) && (calculatediff3>0) && (calculatediff3<8)) || ((calculatediff3>0) && (calculatediff3<8)))
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Boldog Új Évet!<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/boldogujevet.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //Ez a rész csak a TESZT kedvéért...
    if(!unnep_idoszak)
    document.getElementById('unnep').innerHTML = '<br \/><div>Nincs ünnepi idoszak...<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/boldogujevet.gif" alt="" \/><br \/>'

    és hogy még érthetöbb legyek szoval még dátumokat tennék belle csak nem tudom hogy kell erre kellene segitség meg 1 jó kis plda szoval azt szeretném januér 25 és februér 13 közöt számlálja szövegel menyi nap van még hátra és 14 edikén boldog valentint kivánjon ha ezt kis hozza irás kisérné pl.ezzel álitod a honapot innen a napot ezt kellet belle tenni hogy ki mutassa a február 14 et és igy számolod ki metöl medig számoljon ez kellene bocs a helyesirésárt külföldi vagyok kát én a programkodra katintotam de csak ilyen lett nem tom miért

    [ Szerkesztve ]

  • superboyka

    csendes tag

    válasz Zedz #4639 üzenetére

    hát én probáltam de ugy össze van keverve html css nem tudtam széjel szedni figyeld a teljes kod amibe névnap is van

    <?php

    opentable("Karácsony Visszaszámláló");

    /* scriptekbõl felépített panel */

    ?>
    <style type="text/css">
    /* */
    #sapka{width:100%;
    font-family:sans-serif;font-size:14px;color:#111F10;text-align:center;}
    .current-submenu{width:800px;font-weight:700;height:345px;text-align:center;margin:0 auto;padding:4px 0 0 0;
    font-size:16px;;border:0 solid #c6ac6c;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;
    background: #E1DFD5;font-family:Insula, Arial, helvetica, sans-serif;
    background-image:-webkit-linear-gradient(left,#938B66, #E1DFD5, #938B66);
    background-image:-moz-linear-gradient(left,#938B66, #E1DFD5, #938B66);
    background-image:-o-linear-gradient(top left,#938B66, #E1DFD5 50%,#938B66 100%);
    -pie-background:linear-gradient(left, #938B66, #E1DFD5, #938B66);
    behavior:url('infusions/nevunep_panel/pie.htc');z-index:2;}
    #unnep_keret{width:800px;min-height:10px;height:auto;margin:0 auto;padding:0;position:relative;}
    #unnep{width:800px;margin:0;padding:0;position:absolute;left:0;top:0; background: url('infusions/nevunep_panel/orange50.png') 0 0 repeat;
    -moz-border-radius:8px;-webkit-border-radius:8px;-o-border-radius:8px;-ms-border-radius:8px;
    border-radius:8px;border:0px solid blue;behavior:url('infusions/nevunep_panel/pie.htc');}
    #unnep div{width:797px;margin:0 auto;padding:0;color:#FFFFFF;font-family:Insula, Arial, helvetica, sans-serif;
    height:30px;line-height:30px;font-size:18px;background: url('infusions/nevunep_panel/unnep.gif') 0 0 repeat;
    -moz-border-radius:8px;-webkit-border-radius:8px;-o-border-radius:8px;-ms-border-radius:8px;
    border-radius:8px;border:0px solid gray;behavior:url('infusions/nevunep_panel/pie.htc');}
    </style>
    <div id="sapka"><div id="sapka">
    <script type="text/javascript">
    /**************** aktuális dátum/névnap meghatározó *************/
    var ido = new Date();
    var ev = ido.getYear();
    var ho = ido.getMonth();
    var nap = ido.getDate();
    var napszam = ido.getDay();
    var honap_hossz = 0;
    if (ev<1900)
    { ev+=1900; }
    //hónap nevének meghatározása
    function honev(ho)
    {
    var month = new Array("Január", "Február", "Március", "Április", "Május", "Június",
    "Július", "Augusztus", "Szeptember", "Október", "November", "December");
    return month[ho];
    }
    //nap nevének meghatározása
    function napnev(szam)
    {
    var napnevek = new Array("vasárnap", "hétfo", "kedd", "szerda", "csütörtök",
    "péntek", "szombat", "vasárnap");
    return napnevek[szam];
    }
    //adott napon lévo névnapok meghatározása
    function nevnap(evben,hoban,napon) {
    if (hoban==1) { //Január
    var napok = new Array("",
    "Alpár, Fruzsina, Bazil", "Ábel, Gergely, Vazul", "Genovéva, Gyöngyvér, Benjámin, Dzsenifer", "Titusz, Leona, Angéla", "Simon, Emília",
    "Gáspár, Menyhért, Boldizsár", "Attila, Ramóna, Rajmund, Bálint", "Gyöngyvér, Szeverinusz, Szörény", "Marcell, Juliánusz", "Melánia, Vilmos, Vilma",
    "Ágota, Honoráta", "Erno, Erneszta, Tatjána", "Veronika, Csongor, Yvett", "Bódog, Félix", "Lóránt, Loránd, Pál",
    "Gusztáv, Marcell", "Antal, Antónia", "Margit, Piroska", "Sára, Márta, Márió", "Fábián, Sebestyén",
    "Ágnes, Agnéta", "Vince, Artúr", "Zelma, Rajmund, Emerencia, Emese", "Timót, Ferenc", "Pál, Henrik",
    "Vanda, Paula, Timóteusz", "Angéla, Angelika", "Károly, Karola, Tamás", "Adél, Valér", "Martina, Gerda, Jácinta",
    "Marcella, János");
    }
    else if (hoban==2) { //Február
    if((evben%4 == 0 && evben%100 != 0) || evben%400 == 0)
    {
    var napok=new Array("",
    "Ignác, Brigitta, Kincso", "Karolina, Karola, Aida", "Balázs, Oszkár, Celerina", "Ráhel, Csenge, Veronika, András", "Ágota, Ingrid, Etelka, Léda",
    "Dorottya, Dóra, Pál", "Tódor, Rómeó, Richárd", "Aranka, Jeromos", "Abigél, Alex, Apollónia", "Elvira",
    "Bertold, Marietta", "Lívia, Lídia, Eulália", "Ella, Linda, Levente, Katalin", "Bálint, Valentin, Cirill, Metód", "Kolos, Györgyi, Georgina",
    "Julianna, Lilla, Filippa", "Donát", "Bernadett, Simon, Zenko", "Zsuzsanna, Eliza, Konrád", "Aladár, Álmos, Leó",
    "Eleonóra, Zelmira, Péter", "Gerzson, Margit", "Alfréd, Polikárp", "SENKI SEM(szökonap)", "Mátyás, Jázmin",
    "Géza, Cézár, Vanda", "Edina, Viktor, Gyozo", "Ákos, Bátor, Gábor", "Elemér, Oszvald, Román")
    }
    else
    {
    var napok=new Array("",
    "Ignác, Brigitta, Kincso", "Karolina, Karola, Aida", "Balázs, Oszkár, Celerina", "Ráhel, Csenge, Veronika, András", "Ágota, Ingrid, Etelka, Léda",
    "Dorottya, Dóra, Pál", "Tódor, Rómeó, Richárd", "Aranka, Jeromos", "Abigél, Alex, Apollónia", "Elvira",
    "Bertold, Marietta", "Lívia, Lídia, Eulália", "Ella, Linda, Levente, Katalin", "Bálint, Valentin, Cirill, Metód", "Kolos, Györgyi, Georgina",
    "Julianna, Lilla, Filippa", "Donát", "Bernadett, Simon, Zenko", "Zsuzsanna, Eliza, Konrád", "Aladár, Álmos, Leó",
    "Eleonóra, Zelmira, Péter", "Gerzson, Margit", "Alfréd, Polikárp", "Mátyás, Jázmin", "Géza, Cézár, Vanda",
    "Edina, Viktor, Gyozo", "Ákos, Bátor, Gábor", "Elemér, Oszvald, Román")
    }
    }
    else if (hoban==3) { //Március
    var napok=new Array("",
    "Albin, Albina, Leonita, Lea", "Lujza, Ágnes, Henrik, Magor", "Kornélia, Kunigunda, Frigyes", "Kázmér, Lúciusz, Zorán", "Adorján, Adrián",
    "Leonóra, Inez, Koletta", "Tamás, Perpétua, Felicitász", "János, Zoltán, Apolka", "Franciska, Fanni", "Ildikó, Emil, Gusztáv",
    "Szilárd, Tímea, Konstantin", "Gergely, Maximilián", "Krisztián, Ajtony, Egyed, Patrícia", "Matild, Matilda, Trilla", "Kristóf, Kelemen",
    "Henrietta, Herbert", "Gertrúd, Patrik", "Sándor, Ede, Cirill", "József, Bánk", "Klaudia, Alexandra",
    "Benedek, Bence, Miklós", "Beáta, Izolda, Lea", "Emoke, Botond, Ottó, Kartal", "Gábor, Karina", "Irén, Írisz, Lúcia",
    "Emánuel, Emánuéla, Larissza, Árpád", "Hajnalka, Lídia, Auguszta", "Gedeon, Johanna", "Auguszta, Bertold", "Zalán",
    "Árpád, Benjámin, Beno")
    }
    else if (hoban==4) { //Április
    var napok=new Array("",
    "Hugó, Agád", "Áron, Ferenc", "Buda, Richárd, Hóvirág, Indira", "Izidor", "Vince, Irén, Teodóra",
    "Vilmos, Bíborka, Taksony, Celesztin", "Herman, János", "Dénes, Valér, Valter", "Erhard, Ákos, Döme", "Zsolt, Ezekiel",
    "Leó, Szaniszló, Glória", "Gyula, Baldvin, Sába", "Ida, Márton, Hermina", "Tibor", "Anasztázia, Tas, Oktávia",
    "Csongor, Bernadett", "Rudolf, Izidóra", "Andrea, Ilma, Apolló, Aladár", "Emma, Malvin, Zseraldina", "Tivadar, Tihamér, Töhötöm",
    "Konrád, Zelmira, Anzelm", "Csilla, Noémi, Kájusz", "Béla, Adalbert", "György, Fidél, Debóra", "Márk, Ányos",
    "Ervin, Klétusz", "Zita, Mariann, Anasztáz", "Valéria, Péter", "Péter, Katalin, Roberta", "Katalin, Kitti, Zsófia, Piusz")
    }
    else if (hoban==5) { //Május
    var napok=new Array("",
    "Fülöp, Jakab, Zsaklin, Jefte, József", "Zsigmond, Atanáz, Zoé", "Tímea, Irma, Jakab, Fülöp", "Mónika, Flórián", "Györgyi, Irén",
    "Ivett, Frida, Judit, Yvett", "Gizella, Gusztáv, Bendegúz", "Mihály, Gyozo", "Gergely, Katinka, Alberta, Édua", "Ármin, Pálma, Izidor",
    "Ferenc", "Pongrác", "Szervác, Imola, Imelda", "Bonifác, Gyöngyi", "Zsófia, Szonja, Döníz",
    "Mózes, Botond, János", "Paszkál, Ditmár, Rezeda", "Erik, Alexandra, János", "Ivó, Iván, Milán", "Bernát, Bernardin, Felícia",
    "Konstantin, András", "Júlia, Rita, Emil", "Dezso, Vilmos, Renáta", "Eszter, Eliza, Vanessza", "Orbán, Gergely",
    "Fülöp, Evelin", "Hella, Pelbárt, Ágoston", "Emil, Csanád, Vilmos", "Magdolna, Magda, Ervin, Léna", "Janka, Zsanett, Johanna, Nándor",
    "Angéla, Petronella")
    }
    else if (hoban==6) { //Június
    var napok=new Array("",
    "Tünde, Jusztinusz", "Kármen, Anita, Péter, Marcellinusz", "Klotild, Cecília, Károly", "Bulcsú, Kerény, Kerubin", "Fatime, Fatima, Bonifác",
    "Norbert, Norberta, Cintia", "Róbert, Robertina, Arianna, Fülöp, Roberta", "Medárd, Helga", "Félix, Elod, Annamária, Annabella", "Margit, Gréta",
    "Barnabás", "Villo, Orfeusz, Adelaida", "Antal, Anett", "Vazul, Elizeus, Herta", "Jolán, Vid, Viola",
    "Jusztin, Jusztina, Auréliusz", "Laura, Alida, Alina, Szabolcs, Adolf, Bató", "Arnold, Levente, Doloróza", "Gyárfás, Romuald", "Rafael, Dina",
    "Alajos, Leila", "Paulina, Tamás", "Zoltán, Szultána", "János, Iván", "Vilmos, Viola, Vilma",
    "János, Pál, Cirill", "László, Sámson", "Levente, Irén, Iréneusz", "Péter, Pál,Emoke, Judit, Petra, Szulamit, Ivett", "Pál")
    }
    else if (hoban==7) { //Július
    var napok=new Array("",
    "Tihamér, Annamária, Olivér, Áron", "Ottó", "Kornél, Soma, Tamás", "Ulrik, Erzsébet", "Emese, Sarolta, Lotti, Antal",
    "Csaba, Mária", "Apollónia, Vilibald, Bene", "Ellák, Edgár, Eperke", "Lukrécia, Veronika, Hajnalka", "Amália, Melina Engelbert, Ulrika",
    "Nóra, Lili, Nelli, Benedek", "Izabella, Dalma, Eleonóra", "Jeno, Henrik", "Örs, Stella, Kamil", "Örkény, Henrik, Roland, Bonaventúra",
    "Valter, Irma", "Endre, Elek, András", "Szömér, Frigyes, Milla, Hedvig, Mirkó", "Emília", "Illés, Margaréta",
    "Dániel, Daniella, Lorinc", "Magdolna, Mária, Magda", "Lenke, Brigitta, Apollinár", "Kinga,Kunigunda, Kincso, Krisztina", "Kristóf, Jakab",
    "Anna, Anikó, Joakim", "Olga, Liliána, Natália, Pantaleon", "Szabolcs, Alina, Ince, Gyozo", "Márta,Flóra", "Judit, Xénia, Péter",
    "Oszkár, Ignác, Bató")
    }
    else if (hoban==8) { //Augusztus
    var napok=new Array("",
    "Boglárka,Nimród, Alfonz", "Lehel", "Hermina, Lídia, Kamélia", "Domonkos, Dominik, János, Dominika", "Krisztina",
    "Berta, Bettina", "Ibolya", "László, Domonkos", "Emod, Román", "Lorinc, Blanka, Csilla",
    "Zsuzsanna, Tiborc, Klára", "Klára, Hilária, Diána", "Ipoly, Ince, Vitália", "Marcell, Maximilián", "Mária",
    "Ábrahám, Rókus", "Jácint, Réka, Hetény", "Ilona, Rajnald", "Huba, Marián, Emília", "István, Bernát",
    "Sámuel, Hajna, Piusz", "Menyhért, Mirjam", "Bence, Róza, Szidónia", "Bertalan, Aliz, Detre", "Lajos, Patrícia",
    "Izsó, Tália, Natália, Zamfira", "Gáspár, Mónika", "Ágoston, Mózes", "Beatrix, Erna", "Rózsa, Félix, Letícia",
    "Erika, Bella, Arisztid")
    }
    else if (hoban==9) { //Szeptember
    var napok= new Array("",
    "Egyed, Egon, Noémi, Tamara", "Rebeka, Dorina, Renáta, Ingrid, István", "Hilda, Gergely", "Rozália, Róza, Ida", "Viktor, Lorinc, Ofélia",
    "Zakariás, Beáta", "Regina", "Mária, Adrienn", "Ádám, Péter", "Nikolett, Hunor, Miklós",
    "Teodóra, Jácint, Igor, Helga", "Mária, Irma", "Kornél, János", "Szeréna, Roxána", "Eniko, Melitta",
    "Edit, Ciprián", "Zsófia, Róbert", "Diána, József", "Vilhelmina, Januáriusz, Dorián", "Friderika",
    "Máté, Mirella, Jónás", "Móric, Tamás", "Tekla, Líviusz, Ila", "Gellért, Gerda, Mercédesz", "Eufrozina, Kende",
    "Jusztina, Kozma, Damján", "Adalbert, Vince", "Vencel, Salamon", "Mihály, Gábor, Rafael Mirabella", "Jeromos, Honória, Hunor")
    }
    else if (hoban==10) { //Október
    var napok= new Array("",
    "Malvin, Teréz", "Petra, Örs", "Helga, Évald", "Ferenc, Hajnalka", "Aurél, Placid, Attila",
    "Brúnó, Renáta, Renátó", "Amália, Bekény", "Koppány, Benedikta", "Dénes, János", "Gedeon, Ferenc, Bendegúz",
    "Brigitta, Placida, Etel, Gitta", "Miksa, Rezso, Edvin", "Kálmán, Ede, Edvárd", "Helén, Kaldixtusz", "Teréz, Aranka",
    "Gál, Margit, Hedvig", "Hedvig, Ignác, Rudolf", "Lukács, Jusztusz", "Nándor, János, Pál", "Vendel, Irén, Kleopátra",
    "Orsolya, Zsolt", "Elod, Szalóme, Kordélia", "Gyöngyvér, János, Gyöngyi", "Salamon, Antal", "Blanka, Bianka, Mór",
    "Dömötör, Armand, Örs", "Szabina, Antonietta", "Simon, Szimonetta, Szimóna, Júdás, Tádé", "Nárcisz, Melinda, Ozike", "Alfonz, Zenóbia",
    "Farkas, Rodrigó, Wolfgang")
    }
    else if (hoban==11) { //November
    var napok=new Array("",
    "Marianna", "Achilles, Bató", "Gyozo, Márton", "Károly, Karola", "Imre, Zakariás, Tétény",
    "Lénárd, Krisztina", "Csenger, Rezso, Erno, Florentin", "Zsombor, Kolos, Gottfrid", "Tivadar", "Réka, András, Leó",
    "Márton, Atád, Tódor", "Jónás, Renátó, Jozafát", "Szilvia, Szaniszló", "Aliz, Vanda, Huba, Klementina", "Albert, Lipót",
    "Ödön, Margit", "Hortenzia, Gergo, Dénes", "Jeno", "Erzsébet, Zsóka", "Jolán, Zsolt, Ödön, Bódog",
    "Olivér", "Cecília, Filemon", "Kelemen, Klementina, Kolumbán", "Emma, Flóra, Virág", "Katalin, Liza, Katinka",
    "Virág, Szvetlana, Konrád, Viktória, Milos", "Virgil, Virgínia", "Stefánia, Jakab", "Taksony, Ilma, Filoména", "András, Andor, Andrea")
    }
    else if (hoban==12) { //December
    var napok=new Array("",
    "Elza, Natália, Blanka, Bonita", "Melinda, Vivien, Aranka", "Ferenc, Olívia", "Borbála, Barbara, János", "Vilma, Ünige, Csaba",
    "Miklós, Csinszka, Gyopár, Gyopárka", "Ambrus, Ambrózia", "Mária, Emoke", "Natália, Valéria, Filótea", "Judit, Loretta, Eulália",
    "Árpád, Árpádina, Damazusz", "Gabriella, Johanna, Franciska", "Luca, Otília, Lúcia, Éda, Tilia", "Szilárda, Szilárd, János", "Valér, Detre",
    "Etelka, Aletta, Adelaida", "Lázár, Olimpia", "Auguszta, Gracián", "Viola, Anasztáz", "Teofil, Liberátusz",
    "Tamás, Péter", "Zénó, Flórián", "Viktória, János", "Ádám, Éva, Adél", "Eugénia, Anasztázia",
    "István", "János, Teodor", "Kamilla, Apor", "Tamás, Tamara", "Dávid, Hunor, Libériusz",
    "Szilveszter, Donáta")
    }
    honap_hossz = napok.length;
    return napok[napon];
    }
    //dátum(év, honapnév, nap, napnév), mai névnap, holnapi névnap meghatározás
    var nevnapok=new Array()
    nevnapok[0]='Ma "'+ev+'. '+honev(ho)+'. '+ nap+'" '+napnev(napszam)+' van...';
    nevnapok[1]='A mai napon "' + nevnap(ev,(ho+1),nap) + '" ünnepli névnapját.';
    if( (honap_hossz-1) == nap)
    {
    if( (ho+1) == 12)
    nevnapok[2]='Holnap "' + nevnap(ev,1,1) + '" ünnepli névnapját.';
    else
    nevnapok[2]='Holnap "' + nevnap(ev,(ho+2),1) + '" ünnepli névnapját.';
    }
    else
    nevnapok[2]='Holnap "' + nevnap(ev,(ho+1),nap+1) + '" ünnepli névnapját.';
    //dátum, mai névnap, holnapi névnap váltás
    function nevnapvalto(content, divId, divClass, delay, fadeornot)
    {
    this.content=content;
    this.tickerid=divId;
    this.delay=delay;
    this.mouseoverBol=0;
    this.pointer=1;
    this.opacitystring=(typeof fadeornot!="undefined")? "width: 100%; filter:progid:DXImageTransform.Microsoft.alpha(opacity=100); -moz-opacity: 1" : "";
    if (this.opacitystring!="")
    this.delay+=500;
    this.opacitysetting=0.2;
    document.write('<div id="'+divId+'" class="'+divClass+'"><div style="'+this.opacitystring+'">'+nevnapok[0]+'<\/div><\/div>');
    var instanceOfTicker=this;
    setTimeout(function(){instanceOfTicker.initialize()}, delay);
    }
    nevnapvalto.prototype.initialize=function()
    {
    var instanceOfTicker=this;
    this.contentdiv=document.getElementById(this.tickerid).firstChild;
    document.getElementById(this.tickerid).onmouseover=function(){instanceOfTicker.mouseoverBol=1};
    document.getElementById(this.tickerid).onmouseout=function(){instanceOfTicker.mouseoverBol=0};
    this.rotatemsg();
    }
    nevnapvalto.prototype.rotatemsg=function()
    {
    var instanceOfTicker=this;
    if (this.mouseoverBol==1)
    setTimeout(function(){instanceOfTicker.rotatemsg()}, 100);
    else
    {
    this.fadetransition("reset");
    this.contentdiv.innerHTML=this.content[this.pointer];
    this.fadetimer1=setInterval(function(){instanceOfTicker.fadetransition('up', 'fadetimer1')}, 100);
    this.pointer=(this.pointer<this.content.length-1)? this.pointer+1 : 0;
    setTimeout(function(){instanceOfTicker.rotatemsg()}, this.delay);
    }
    }
    nevnapvalto.prototype.fadetransition=function(fadetype, timerid)
    {
    var contentdiv=this.contentdiv;
    if (fadetype=="reset")
    this.opacitysetting=0.2;
    if (contentdiv.filters && contentdiv.filters[0])
    {
    if (typeof contentdiv.filters[0].opacity=="number") //IE6+
    contentdiv.filters[0].opacity=this.opacitysetting*100;
    else //IE 5.5
    contentdiv.style.filter="alpha(opacity="+this.opacitysetting*100+")";
    }
    else
    if (typeof contentdiv.style.MozOpacity!="undefined" && this.opacitystring!="")
    { contentdiv.style.MozOpacity=this.opacitysetting; }
    else
    this.opacitysetting=1;
    if (fadetype=="up")
    this.opacitysetting+=0.2;
    if (fadetype=="up" && this.opacitysetting>=1)
    clearInterval(this[timerid]);
    }
    /************** ÜNNEPEK ***************/
    function unnepek()
    {
    var unnep_idoszak = false;
    var today = new Date();
    var theoccasion1 = new Date(parseInt(today.getFullYear()), 12, 25);
    var mikulas_nap = new Date(parseInt(today.getFullYear()), 12, 6);
    if(parseInt(today.getMonth())==11)
    {
    var theoccasion2 = new Date(parseInt(today.getFullYear()+1), 1, 1);
    var theoccasion3 = new Date(parseInt(today.getFullYear()+1), 1, 8);
    }
    else
    {
    var theoccasion2 = new Date(parseInt(today.getFullYear()), 1, 1);
    var theoccasion3 = new Date(parseInt(today.getFullYear()), 1, 8);
    }
    mikulas_nap.setMonth(theoccasion1.getMonth()-1);
    theoccasion1.setMonth(theoccasion1.getMonth()-1);
    theoccasion2.setMonth(theoccasion2.getMonth()-1);
    theoccasion3.setMonth(theoccasion3.getMonth()-1);

    var one_day = 1000*60*60*24;
    calculate_mikulas_nap = Math.ceil((parseInt(mikulas_nap.getTime())-parseInt(today.getTime()))/(one_day));
    calculatediff1 = Math.ceil((parseInt(theoccasion1.getTime())-parseInt(today.getTime()))/(one_day));
    calculatediff2 = Math.ceil((parseInt(theoccasion2.getTime())-parseInt(today.getTime()))/(one_day));
    calculatediff3 = Math.ceil((parseInt(theoccasion3.getTime())-parseInt(today.getTime()))/(one_day));
    if (calculate_mikulas_nap < 0)
    {
    var nextyeartoday=new Date();
    nextyeartoday.setFullYear(today.getFullYear()+1);
    calculate_mikulas_nap = Math.ceil((nextyeartoday.getTime()-today.getTime())/(one_day)+calculate_mikulas_nap);
    }
    if (calculatediff1 < 0)
    {
    var nextyeartoday=new Date();
    nextyeartoday.setFullYear(today.getFullYear()+1);
    calculatediff1 = Math.ceil((nextyeartoday.getTime()-today.getTime())/(one_day)+calculatediff1);
    }
    if (calculatediff2 < 0)
    {
    var nextyeartoday=new Date();
    nextyeartoday.setFullYear(today.getFullYear()+1);
    calculatediff2 = Math.ceil((nextyeartoday.getTime()-today.getTime())/(one_day)+calculatediff2);
    }
    if (calculatediff3 < 0)
    {
    var nextyeartoday=new Date();
    nextyeartoday.setFullYear(today.getFullYear()+1);
    calculatediff3 = Math.ceil((nextyeartoday.getTime()-today.getTime())/(one_day)+calculatediff3);
    }
    //nov.22-tól dec.5-ig
    if ( (calculate_mikulas_nap>0) && (calculate_mikulas_nap<15) )
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Még '+calculate_mikulas_nap+' napot alszunk és jön a Mikulás...<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/jon_mikulas.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //dec.6-án
    if ( (calculate_mikulas_nap==0) )
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Gyerekek, megérkezett a Mikulás!<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/megjott_mikulas.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //dec.7-tól 24-ig
    if ((calculatediff1>0) && (calculatediff1<29) && (calculatediff2<26) && (calculatediff3<33))
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Még '+calculatediff1+' napot alszunk és itt a Karácsony...<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/jon_karacsony.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //dec.25-én és 26-án
    if (calculatediff1==0 || (calculatediff1>0 && calculatediff2==6))
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Boldog Karácsonyi Ünnepeket!<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/boldog-karacsonyt.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //dec.27-tol dec.31-ig
    if((calculatediff1>0) && (calculatediff2>0) && (calculatediff2!=6) && (calculatediff2<7) && (calculatediff3>0))
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Még '+calculatediff2+' napot alszunk és itt van Uj Év..<\/div>'+
    '<img src="infusions/nevunep_panel/kellemes_unnepek.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //jan.01-tol jan.07-ig
    if(((calculatediff1>0) && (calculatediff2==0) && (calculatediff3>0) && (calculatediff3<8)) || ((calculatediff3>0) && (calculatediff3<8)))
    {
    document.getElementById('unnep').innerHTML = '<br \/><div>Boldog Új Évet!<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/boldogujevet.gif" alt="" \/><br \/>';
    unnep_idoszak = true;
    }
    //Ez a rész csak a TESZT kedvéért...
    if(!unnep_idoszak)
    document.getElementById('unnep').innerHTML = '<br \/><div>Nincs ünnepi idoszak...<\/div>'+
    '<br \/><img src="infusions/nevunep_panel/boldogujevet.gif" alt="" \/><br \/>';
    }

    </script>
    <div class="current-submenu">
    <script type="text/javascript">new nevnapvalto(nevnapok, "hnevnap", "hnevnapstyle", 5000, "");</script>
    <div id="unnep_keret"><div id="unnep"></div></div>
    <script type="text/javascript">unnepek();</script>
    <center><hr width="99%" color="#000" size="20"> </hr></center>
    </div></br></br>
    <?
    closetable();
    ?>

  • superboyka

    csendes tag

    válasz Zedz #4641 üzenetére

    az elején azért csak azt a részét másoltam be amelyiken alakitani kellene a többinek semi köze a problémához szoval csak az ünepek részébe kell elméletileg alakitani amit utoljára bemásoltam csak azért lásad nem jó az a megoldás amit adtál , inkáb magyarázat kellene nekem mivel mondtam nem sokat értek a js hez .

  • superboyka

    csendes tag

    válasz Zedz #4643 üzenetére

    a kod müködik ha kell html be be másolom de megprobálom szét szedni ha be másolom abba akkor mitt kell csináljak még? lementeni le lehet vagy mit kell tegyek?

    [ Szerkesztve ]

  • Jim-Y

    veterán

    válasz Zedz #4689 üzenetére

    Pedig sok helyen használják őket, csak lehet te még nem találkoztál velük, magadtól írni pedig valószínűleg még annyira sem.

    A JavaScriptet nem csak honlapfejlesztésre használják. A tapasztalaton szerint ha valaki eddig csak a webfejlesztéssel került kapcsolatba akkor elképzelhető, bár érdekes, hogy nem látott még ilyenre példát. De más területeken, ahol JS-t használnak sűrűn elő szokott fordulni. Mondok pár példát:

    - Grafika/Játékok: canvas, például kell csinálnod egy Pont osztályt. Vagy egy lövedék osztályt, vagy bármit. Sűrűn előfordul.
    - IoT/Nodebots: Johnny-Five | Led class
    - jQuery: maga a jQuery is csak egy osztály egy objektuma https://github.com/jquery/jquery/blob/master/src/core.js#L23
    - A Promis libek is használják, stb.. Q

    Ennél jobb példák, amik nem az ilyen alap tutorial szintű példák most nem jutnak eszembe :)

    [ Szerkesztve ]

  • Sk8erPeter

    nagyúr

    válasz Zedz #4689 üzenetére

    "ahogy így belegondoltam majdnem mindenre elég a sima object literal"
    Dehogy elég. Az object literal pont egy elég rossz példa volt. Például kapásból ha értelmesen szeretnél több példányt létrehozni klónozások, meg mindenféle baromkodások nélkül, akkor máris korlátokba ütköztél. Mi engedett arra a következtetésre jutni, hogy "majdnem mindenre elég"? :)

    Az előző lapon amúgy rengeteg szó volt az objektumorientált dolgokkal kapcsolatos témákról, kb. ezt a tartományt nézd (na meg nyilván az összefoglalót):
    http://prohardver.hu/tema/javascript_topic/hsz_4404-4560.html

    Sk8erPeter

  • Sk8erPeter

    nagyúr

    válasz Zedz #4692 üzenetére

    Na várj, a kérdéseidből ítélve úgy látom, hogy az objektumorientáltságnak az alapjaival sem vagy még (eléggé) tisztában, szóval jobban utána kéne olvasnod az OOP-nek (meg annak, hogy mondjuk miért jó, ha valamiből több példányod is lehet), most végül is mindegy, melyik nyelven, bár az is igaz, hogy erre pont nem a JavaScriptet tartanám a legjobb nyelvnek...

    Egyébként amiről te beszélsz, az kb. annak felel meg, hogy van egy osztályod, statikus attribútumokkal és metódusokkal, amiket példányosítás nélkül meg tudsz hívni, és babrálsz velük.
    Ezekre is bőven van példa magában a JavaScriptben is. De ha több különálló példányt is szeretnél létrehozni, mert azokat külön szeretnéd kezelni, akkor ez már nem elég.

    "jQuerynél miért kell azt példányosítani?"
    A példányosításnak semmi köze nincs a jQuery-hez. Erre is a válasz az, hogy nézz utána, miért jó bármiből is több példányt létrehozni.

    Sk8erPeter

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