Új hozzászólás Aktív témák
-
trisztan94
őstag
válasz PumpkinSeed #11557 üzenetére
Ez a pricing resz tiszteletnek orvend, biztos elofizetek majd, ha lesz vegre penzem
https://heureka-kreativ.hu
-
Sk8erPeter
nagyúr
-
DNReNTi
őstag
válasz PumpkinSeed #11620 üzenetére
Az otp eleg elterjedt de koltseges. Vagy 2 eve volt egy egyszeri dija + jutalek. Azota nem hasznaltam. A k&h-nak is tuti hogy van. Erdemes szetnezni mert arban nagy kulonbseg lehet. Mwjd ird meg a tapasztalatokat. Erdekel engem is.
but without you, my life is incomplete, my days are absolutely gray
-
MC Pite
veterán
válasz PumpkinSeed #11648 üzenetére
Ha jól tudom gyermekruhákhoz/takarókhoz (varrónőnek) kellene webshop (értsd nem millió cikkel kell feltölteni), 2 link alakkal nekilátott elvileg, de hónapokig semmi sem történt, így otthagyta őket a fenébe. Bp-i a hölgy, és most valaki megbízható embert keresne.
Nem tudom hogy valami alapot (unas) érdemes ilyenkor választani, vagy egyszerűbb egyet csináltatni; illetve extraként (akár külön) némi online marketinges szolgáltatás is jó lenne mellé. Szívesen segítenék neki, de nekem ilyen téren 0 tapasztalatom van, ismereteim is a nullához konvergálnak.
Milyen téren pontosítsunk, vagy miket kéne megadni, stb.
<ELADÓ:új Bryton Gardia radar 32k> Pixel 8 | C4 SpaceTourer 1.2 Pt '18 | 208 1.2VTi '18 | https://www.spritmonitor.de/en/user/MC_Pite.html
-
Pikaa
aktív tag
-
#68216320
törölt tag
válasz PumpkinSeed #11698 üzenetére
És az olvashatóság, testreszabhatóság, indexelhetőség, sávszélesség kímélés ellen kifejlesztve. De a poén leginkább az, hogy el tudja adni. Validátor szerint is egy kincs
-
PumpkinSeed
addikt
válasz PumpkinSeed #11848 üzenetére
Ez a probléma megoldódott. Jött egy új helyette.
Ebben a részben a JS ki van egészítve míg itt nincs. A kiegészítés a popup bezárása, ha mellé kattintunk, de a kiegészítéssel hiába kattintok a gombra, nem jön fel a popup, igazából jsfiddle-n sehogy nem jön fel. Itt viszont jól látszódik, hogy fel ugrik.
"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
-
jocomen
aktív tag
válasz PumpkinSeed #11848 üzenetére
Vagy beágyaznám a második két div-et az elsőbe, vagy ugyanúgy megformáznám, esetleg mindkettő.
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #11849 üzenetére
Hű, hát ez jó ronda kód. Nem szépítettem, az a Te feladatod, csak működőképessé tettem:
http://jsfiddle.net/BnW2E/4/Amúgy felejtsd el az egykarakteres változóneveket, rövidítgetéseket, borzasztó idegesítő, követhetetlen, felesleges.
És ne használj olyan szavakat, mint a "lokáció", mert csak az jön le, hogy komolynak akartál tűnni, csak nem jött össze. Használd helyette a megfelelő magyar szót, pl. helyszín, vagy amit szerettél volna kifejezni vele. Ez olyan, mint az applikáció (miért is nem alkalmazás?), meg a többi idegesítő, kierőltetett műszó.
Sk8erPeter
-
martonx
veterán
válasz PumpkinSeed #11855 üzenetére
Ezt most csak én nem értem. Ez nem egy popup, hanem egy új böngésző ablakot / tabot nyit meg.
És most mit akarsz ezen formázni???Én kérek elnézést!
-
jocomen
aktív tag
válasz PumpkinSeed #11860 üzenetére
Nem értek a .js-hez, de az elérési utat nem kéne megadni?
<script src=".js/valami.js"> -
DNReNTi
őstag
válasz PumpkinSeed #11862 üzenetére
Írd be a devtool konzolba Ha akkor se csinál semmit akkor a js a hibás.
but without you, my life is incomplete, my days are absolutely gray
-
martonx
veterán
válasz PumpkinSeed #11860 üzenetére
Szintaktikailag jónak tűnik. Gondolom abban az időpillanatban még nincs meg a függvény, amit meg akarsz hívni. Ebben így távolról nem fogunk tudni segíteni. Maximum annyit, hogy így szerver oldalról kliens oldalra áthívni gusztustalan.
Én kérek elnézést!
-
DeltaPower
őstag
válasz PumpkinSeed #11860 üzenetére
esetleg így?
<script type="text/javascript">product_show_plus();</script>vagy window.load-ra tenni?
[ Szerkesztve ]
"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser
-
Rolly
veterán
válasz PumpkinSeed #11865 üzenetére
és ha onloadból ajax hívással töltenéd be a tartalmat oda?
-
martonx
veterán
válasz PumpkinSeed #11865 üzenetére
igen, de vélhetően mire ezt írod a konzolba, addigra már lefutottak a scriptjeid, létrejött a függvény, amit hívni akarsz. Mikor viszont a php-vel kiküldött scripted lefut (gyakorlatilag renderelésnél kapásból, amikor odaér a böngésző), vélhetően még nincs sehol ez a függvény.
Már csak ezért is gusztustalan ez a megoldás, pont az ilyen hibák miatt. És akkor még enm beszéltünk arról, hogy mi van ha valakinek lassabb gépe / lassabb internete van, náluk még jobban elő tudnak jönni ilyen hibák.Én kérek elnézést!
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #11860 üzenetére
Valószínűleg még azelőtt hívódik meg a függvény, és próbál buzerálni valami elemet, mielőtt a DOM-ba az bekerült volna, vagy valami hasonló: pl. úgy hívod meg a függvényt, hogy annak a definíciója/törzse később került be a kimenetbe (tehát pl. a product_show_plus függvényedet tartalmazó JS-fájl a meghívás pillanatában még nem lett hivatkozva). Amúgy tényleg rettentő undorító megoldás ez, egy az egyben kiíratni az egészet szerveroldalon.
De ha már így alakult, inkább ezt írasd ki (persze rakd köré a script taget, stb.):
function initialize(e) {
product_show_plus();
}
if(document.addEventListener){
document.addEventListener('load', initialize);
} else { // IE8
document.attachEvent('onload', initialize);
}Ha így sem íródik ki, nézd meg, van-e valami hiba jelezve a konzolon (F12 vagy Ctrl+Shift+I, Console fül), és nézd meg a sorrendeket. Vagy ossz meg több infót.
(#11855) PumpkinSeed :
Nem értem, minek művelsz ilyeneket. Hát hogy néz ez ki? Miért nem egy sima link van a termékeken? Aztán a link kattintás eseményét kezelheted kliensoldalon is, egy tisztességesen kinéző függvénnyel.
(#11861) jocomen :
Nem értek a .js-hez, de az elérési utat nem kéne megadni?
<script src=".js/valami.js">
Egyrészt hiányzik a zárótag (</script>), másrészt az általad írt módszer akkor érvényes, ha külső JS-fájlban található a kód (ami egyébként a javasolt módszer), itt az illető közvetlenül a kimenetbe szeretné injektálni a JavaScript-kódot, és egy egyszerű függvényhívást betenni.(#11866) DeltaPower :
"esetleg így?
<script type="text/javascript">product_show_plus();</script>
"Jaj ne már. Ez teljes mértékben ekvivalens azzal, hogy
<script>product_show_plus();</script>Minden említésre méltó böngésző JavaScript-kódként fogja értelmezni a <script>-tagek között lévő kódot, a beszúrt fájloknál sincs szükség már a type="text/javascript" részre a megfelelő MIME type miatt, úgyhogy már jó régóta nem kell külön jelezni, mint korábban.
HTML4-nél legfeljebb validitási problémákat jelezhetett a W3C validátora. Semmi más probléma nem származik a hiányából, HTML5-nél meg kifejezetten nem kéne már erőltetni ennek a használatát.Még egy forrás:
http://javascript.crockford.com/script.html"
type="text/javascript"This attribute is optional. Since Netscape 2, the default programming language in all browsers has been JavaScript. In XHTML, this attribute is required and unnecessary. In HTML, it is better to leave it out. The browser knows what to do."
Ugyanígy a <style> tageknél sem szükséges már ezer éve a type="text/css".
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #11875 üzenetére
"úgy, hogy fordítottam a sorrenden működik"
Hát ez egyáltalán nem meglepő, és eleve azzal kezdtem a korábbi hsz.-emet, hogy "Valószínűleg még azelőtt hívódik meg a függvény, és próbál buzerálni valami elemet, mielőtt a DOM-ba az bekerült volna". Plusz nem véletlenül javasoltam, hogy a load eseményre kösd a függvény meghívását, még kódot is mutattam.
Amúgy bevett gyakorlat az is, hogy a JavaScript-fájlok behúzása/"inline" JS-kódok (tehát a script-tagek) a HTML-kimenet legvégére kerülnek, még a </body> zárótag elé. Így csak a dokumentum alapelemeinek betöltődését követően foglalkozik a böngésző a JavaScript-kódokkal (ami a látható felület betöltődését így nem hátráltatja), plusz az általad írt problémák is megoldódhatnak."Amúgy muszáj popup-al csinálnom, mert így kell megcsinálnom."
Ettől még teljesen értelmetlen az itt írt gányolás, ezzel a window.location-ös hülyéskedéssel. Nem értem, miért nem oldod meg sima linkkel, a kattintás-eseményt kliensoldalon megfelelően lekezelve (a kattintás esemény alapértelmezett viselkedését (pl. a linkre ugrást ugyanazon/másik fülön/ablakon) meg lehet változtatni).
Persze élből elutasíthatsz minden konstruktív javaslatot, és tűzön-vízen keresztül ragaszkodhatsz a saját elképzeléseidhez, megmagyarázva, hogy te miért is csinálod jól, de kicsit melós ez így, azért van a fórum, hogy megoldásokat, jobb ötleteket javasoljunk, nem izélgetésből tesszük ezeket. Ha nem tiszta a javasolt megoldás, akkor inkább nyugodtan kérdezz vissza.Sk8erPeter
-
martonx
veterán
válasz PumpkinSeed #11915 üzenetére
Nem mindegy, mit csinálna a js, ha a képek nincsenek sehol? Legalább színes hátterű diveket próbálnál jsfiddle-ön animáltatni, hogy legalább látszódna valami. Kérek egy normális példát, aztán majd esetleg segít valaki.
Én kérek elnézést!
-
CSorBA
őstag
válasz PumpkinSeed #11915 üzenetére
De, ír.
1, ReferenceError: slider is not defined
2, onload már lefut, mivel bal oldalt a Frameworks & Extensions résznél onLoad volt választva, pl ilyennél érdemesebb a No wrap - in <body>-t választani. Így már menni fog az onload= attribútum, vagy a window.onload = function(){} -t is írhatod
3, Képek tényleg sehol, sebaj raktam be cicákat.
4, Azt csinálja, amit a kód mond Ad neki egy display blockot, egy css transition attribútomot, majd egy display blockot.
Gondolom a tranitiont nem attribútumban akartad adni, ott lesz a gond, ott keresgélj.
Updatelve: [link]
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #11923 üzenetére
A JSFiddle úgy működik, hogy egy iframe-be pakolja a kódodat, úgy, hogy ő az alapvető markupot legenerálja hozzá:
1. berakja a
<!DOCTYPE html><html><head>...</head><body>...</body></html>
keretet, úgy, hogy
2. a <head>-be beszúrja a karakterkódolást meghatározó <meta>-taget (<meta http-equiv="content-type" content="text/html; charset=UTF-8">),
3. a title-t (amit a bal oldali panelon határozhatsz meg, a Fiddle Options-nél),
4. egy normalize.css-t, amennyiben bepipáltad ezt a Fiddle Options részen,
5. egy dummy CSS-fájlt (ez legalábbis jelenleg üres)
6. az általad kiválasztott library-t valamely CDN-ről belinkelve, vagy épp egy dummy JS-fájlt "No-Library (pure JS)" esetén
7. a saját CSS-kódodat egy legenerált <style>-tagbe,
8. a beállítástól függően rakja be az általad írt JavaScript-kódot egy <script>-tagbe bepakolva (a 4. a kakukktojás, mert ott a kód nem a <head>-be kerül):
8.1. ha onLoad beállítást választottál bal oldalt, akkor a head-részben a script tagen belül window.onload=function(){...} keretet generál, aztán a ... rész helyére rakja a kódodat;
8.2. ha onDomReady beállítást választottál, akkor ilyen keretet generál le (a kommentált részhez kerül a kódod)
8.3. a "No wrap - in <head>" beállítás esetén értelemszerűen nem generál köré semmilyen keretet, a kódod a <head> tag végén, egy <script> tagen belülre kerül, úgy, ahogy van, változtatás nélkül
8.4. a "No wrap - in <body>" kiválasztásakor szintén nem generál köré semmilyen keretet, a kódod viszont a <body> (és nem a <head>) tag legvégén, a záró </body> elé kerül injektálásra, egy <script> tagen belülre, úgy, ahogy van, változtatás nélkül
9. A <body> tagen belülre megy a HTML-panelben megírt kód, változtatás nélkül.Tehát a lényeg, hogy ezt a keretet a jsFiddle biztosítja, neked nem kell megírnod. A <body> tag meglétét mondjuk "kezeli", az onload-attribútummal sincs problémája (nem lesz duplikált <body> tag, hanem értelemszerűen ilyenkor az általad megírt kerül a kódba), de szerintem szokj rá, hogy sosem raksz inline-attribútumokba semmilyen JavaScript-kódot. A JavaScript-kódot mindig gondosan különítsd el a HTML-től, ahogy minden egyéb kódtól is, lehetőleg minimális legyen a kutyulódás a különböző nyelvek között. (Nyilván vannak esetek, amikor nehezen vagy nem elkerülhető, de alapvetően a szeparált kód a cél.) A kódod így szebb, karbantarthatóbb lesz.
Ha valamit mégis a load-eseményre szeretnél kötni, akkor valahogy így használd a JavaScript-kódban:
function onInitialization(){
// ide mehet a kódod
}
window.addEventListener("load", onInitialization, false);(figyelem, az addEventListenerben az onInitialization csak egy mutató a függvényre, amit meg fog hívni a load esemény bekövetkezésekor, szándékosan nincs mögötte a zárójelpár!)
[ Szerkesztve ]
Sk8erPeter
-
fordfairlane
veterán
válasz PumpkinSeed #11915 üzenetére
Kezdjük azzal, hogy a display property nem "transitionable", az opacity-t szokták használni blokkok eltüntetésére vagy "előtüntetésére". Aztán még hozzátenném, hogy a magától aktiválódó transition-t CSS animation-nal szokás kezelni.
[ Szerkesztve ]
x gon' give it to ya
-
PumpkinSeed
addikt
válasz PumpkinSeed #11927 üzenetére
Megoldódott. window.setTimeout-al
"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
-
wis
tag
válasz PumpkinSeed #11932 üzenetére
for(endless=2;endless!=1;endless++): ez egy végtelen ciklus.
Ebből is túlindexelés lesz: for(i=0;i<=selector.length;i++). A feltétel így a helyes: for(i=0;i<selector.length;i++) -
Rolly
veterán
válasz PumpkinSeed #11934 üzenetére
én raknék be egy függvény SetInterval-lal ami 2 másodpercenként meghívja azt a függvényt ami a slideolást végzi. Így nem kell végtelen ciklus...
-
Rolly
veterán
válasz PumpkinSeed #11936 üzenetére
vagy a képeket egy tömbben adod át neki
-
Jim-Y
veterán
válasz PumpkinSeed #11938 üzenetére
Emlékeim szerint te egy expressiont adtál meg a settimeout nap holott egy függvényt kéne. Lehet még egy stringet is ami kódot reprezental de az kerülendő.
-
Jim-Y
veterán
válasz PumpkinSeed #11941 üzenetére
Függvény hívást semmiképp. Úgy kell elkepzelni , hogy a settimeout úgy lett megirva, hogy
function setTimeout(callback, delay) {
wait(delay) ;
callback() ;
}Ebből már gondolom látszik, hogy a függvény hívás miért nem lenne jó. Amúgy :
var timeoutID;
function delayedAlert() {
timeoutID = window.setTimeout(slowAlert, 2000);
}
function slowAlert() {
alert("That was really slow!");
}
function clearAlert() {
window.clearTimeout(timeoutID);
} -
wis
tag
válasz PumpkinSeed #11943 üzenetére
Továbbra is az a baj, hogy egy utasítást írsz be a paraméter helyére ami természetesen azonnal kiértékelődik.
Így próbáld:
setTimeout(function(){selector[i].style.opacity = "1";}, 3000);
Egyébként Google első találat -
Jim-Y
veterán
válasz PumpkinSeed #11943 üzenetére
Ejj.. Kár hogy mobilról vagyok. Na szóval, ha a settimeout első paraméterenek megadsz egy függvényt, de ennek a függvények át kéne adnod a ciklusvaltozot, esetedben az i-t az menni fog csak nem azt eredményezi amire gondolnál. Az fog történni hogy az i nem 0,1,2,3...stb lesz a különböző fuggvenyekben, hanem mindben ugyanaz. Ez az eset a closure - ök iskolapeldaja. Azt kell csinálnod, hogy a függvényt bewrappeled egy IIFE ejtsd iffy - be. Majd valaki aki gépnél van ad peldakodot is.
A másik kérdésedre pedig
setTimeout(myFunction.bind(null, yourParam), delay) ;
[ Szerkesztve ]
-
xors
senior tag
válasz PumpkinSeed #11941 üzenetére
Köszi a programot jónak tűnik valszeg ebben fogom akkor csinálni
-
wis
tag
válasz PumpkinSeed #11947 üzenetére
Lefut, de tényleg hibás lesz ahogy Jim-Y írta.
Szóval helyesen:
function valami(i, selector)
{
setTimeout( selector[i].style.opacity = "1", 5000*i );
}
for(i=0;i<=selector.length;i++)
{
/* ... */
valami(i, selector);
}
[link] -
CSorBA
őstag
válasz PumpkinSeed #11955 üzenetére
Ne haragudj de így visszaolvasva egyáltalán nem értem, hogy miért akarod feltalálni a spanyol viaszt Szerintem nagyon túlbonyolítod az egészet, és többszörösen rossz irányba mész. Ha leírod pontosan mit akarsz, akkor ki tudunk közösen találni valamit, legalábbis iránymutatást tudunk adni. (Pl.: A képek a DOM-ból jönnek? Vagy tömbbe akarod rakni, esetleg JSON, AJAX? Végtelen számú, adott számú, változó számú? Körbe-körbe megy, vagy lefut egyszer? Méretük adott, vagy változó?)
-
DNReNTi
őstag
válasz PumpkinSeed #11966 üzenetére
Persze h lehetseges. Lenyitas bezaras: jquery. Mentes: ajax request.
but without you, my life is incomplete, my days are absolutely gray
-
Jim-Y
veterán
válasz PumpkinSeed #11969 üzenetére
Szia. Eleg gany a kod, de nem volt alkalmas a helyszin/lehetosegek minosegibb kod irasara :/
De azert remelem latszanak a lehetosegeid. Nem kell feltalalnod a spanyol viaszt, ha azt mar valaki feltalalta elottedjquery ui accordion pont azt csinalja amit szeretnel. Lenyilo lista, konfiguralhato, stb. Van hozza event is, amire lehet figyelni. Van oldHeader / oldPanel innentol pedig csak rad van bizva, hogy mit csinalsz.
En tobb lehetoseget is probaltam bemutatni. Mi tortenik a peldaban?
- alapbol az elso item van lenyitva, ebben van egy szerkesztheto felulet, ha ellepsz a masodik elemre, akkor kiszedi az ertekeket es ajaxal elmenti.
- ha a kettes elemet is tulleped amiben van egy form, akkor a form automatikusan elmentodik. Szerintem ez haszontalan, inkabb az ajaxos utat valaszd, de csak, hogy lasd ezt is ..Megj: amugy meg kerdezni is tudni kell. Kb semmit nem tettel annak erdekeben, hogy jo valaszt kapjal. Se egy peldakod, se egy probalkozasmorzsa, a jsfiddle peldat mar meg se emlitem... -.-
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #11969 üzenetére
Te most a jQuery Form Plugint akarod használni, természetesen rosszul. Szerintem próbálj először megismerkedni normálisan a JavaScripttel, és miután ez megvan, azután kezdj csak el foglalkozni a jQuery-vel, mert ez tipikus példája annak, hogy még a nyelv alapjait sem ismered, de máris egy, a nyelv használatát könnyebbé tevő library-t akarsz elkezdeni használni, csak mivel nem tudod, mi történik a háttérben (és a doksik értő olvasása egyelőre nem megy), ezért rosszul próbálkozol.
Korábban azt sem értettem, miért épp a spanyolviaszt akarod felfedezni egy slider formájában, amikor a slider pluginekből Dunát lehet rekeszteni, és szerintem pont nem a legjobb tanulópélda egy ilyen elkészítése. Az ilyen kód meg egyszerűen katasztrófa: borzalmas változónevek, szándékos (!!) végtelen ciklus (ha már ilyet csinálsz, garantált, hogy rossz a gondolkodásmód, mert ez nem indokolt, de ezt később végül szerencsére máshogy oldottad meg), stb.
Jim-Y elég jól megfogalmazta, hogy kérdezni is tudni kell, hogy az általad elvárt választ megkapd."Példakód azért nem volt, mert a teljes HTML rész PHP-ban van, ezért nehéz lett volna kibogarászni, hogy mit hogyan is és értelmesebbnek találtam részletesen elmondani, hogy mit is szeretnék"
Akkor talán ne a PHP-kódokkal kiegészített változatot mutasd, hanem a konkrét HTML-kimenet egy szeletét. Vágod, böngészőben nyomatsz egy Ctrl+U-t a forráskód-nézethez, vagy ami még jobb, Ctrl+Shift+I (vagy F12) a webfejlesztő panel előhozásához, és ott a HTML-kódból tudsz másolgatni.Sk8erPeter
-
jocomen
aktív tag
válasz PumpkinSeed #11975 üzenetére
Lehet nem jól értem a problémát, de mintha js-el akarnál lenyíló menüt csinálni.
Nem tudom ez jó ötlet-e, mivel a google nem biztos, h fel tudja térképezni az oldalad szerkezetét. Vagyis működőképes lesz, de nem keresőbarát.
Helyette css-el (vagy php-val) kéne a menüpontokat kirakni, és csak ami muszáj js-el.Bocs ha valamit félre értettem.
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #11975 üzenetére
"Még csak most ismerkedem a JS-el, de számomra érthetetlen a működése egyenlőre."
egyenlőre --> egyelőre
Melyik része érthetetlen? Amúgy a JavaScript topicban szívesen segítünk, meg az összefoglalóban be van linkelve pár hasznos link.Sk8erPeter
-
Jim-Y
veterán
válasz PumpkinSeed #12007 üzenetére
javascript_topic_hsz_4225-4228
Amúgy csak azért nem érted a javascriptet, mert nem tanultál még eleget belőle. Nem olvastál el elég cikket/tutorialt/doksit. Ilyen egyszerű..
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #12007 üzenetére
"A PHP szerveroldali nyelv, melynek működése egyszerű, mert elkészíti a HTML kimenetet és annyi"
AHAAA, valóban. Csak ennyire való, azt' kész is. A PHP EGYETLEN dolga ez. (Bocs, ezt nagyon szórakoztató így fél 1-kor olvasni, nagyon jót röhögtem. )"na ezek az eventek érthetetlenek számomra, mert legtöbbször a számomra logikus működés ellenére teljesen máshogy működnek"
Mi a számodra logikus, és hogy működik valójában?A setTimeout és setInterval egyébként elég logikusan működik, a működése dokumentációból elolvasható.
A többit Jim-Y kb. leírta.
Igazából jó lenne tudni konkrétan, hogy mit nem értesz, mert a semmire nehéz válaszolni.Sk8erPeter
-
Jim-Y
veterán
válasz PumpkinSeed #12012 üzenetére
Ez azért van, mert a javascript event-driven.
Úgy képzeld el a dolgot, hogy
- van egy stack-ed, pontosan egy, ez az úgynevezett call stack. Amikor a js interpreter elkezdi a kódot feldolgozni, akkor ez történik (kb, pontosan azért én se tudom)
A példakód:
console.log("Start");
for (var i = 1; i < 6; ++i) {
cont.addEventListener('click', function () {
console.log(i);
});
}
console.log("Stop");A stackbe bekerül egy console.log, kiírja, hogy "Start", majd kikerült a stackből, jön a ciklus, bekerül a stackbe egy addEventListener, majd történik valami magic, és kikerül a stackből (a magic-ről később..), ugyez megtörténik még 5x a ciklus miatt. Majd bekerül a stackbe egy console.log és kiírja, hogy "Stop", majd kiürül a stack.
Magic:
Nem csak egy stack-et kell elképzelni, hanem még más dolgokat is, attól függően, hogy milyen környezetben vagyunk. Nézd meg a következő képet. Baloldalon fent, ott a call stack, jobbra a pirosas négyzet browser környezetben a webapis, alul az eventloop, és a message-queue.
Amikor írtam, hogy magic történik az addEventListenerrel, akkor tulajdon képpen az történik, hogy az addEventListener a webapi része, és van neki egy callback-je. Ezt felismeri a runtime, és az addEventListener függvényt továbbpasszolja a webapi-nak, ahol a hozzá definiált callback bekerül a message-queue-ba. És addig vár ott, amíg meg nem történik a click esemény a bizonyos elemen.
Plusz dolog, hogy javascriptben a belső függvények (nem tudok jobb szót:S) magukkal cipelik/látják az őket befoglaló környezetet. Ez a példában azt jelenti, hogy az addEventListener-ben definiált anonim függvény cipeli magával a for ciklust tartalmazó függvény környezetét. Ebben a környezetben az i változó deklarálva lett, így az anonim függvényekben is lesz rá mutató "referencia". Érdemes megjegyezni, mert ez a lényeg, hogy a környezet ilyenkor megosztott, tehát az anonim függvény NEM másolja le az i változó aktuális értékét a saját scope-jába, hanem a saját scope-jába bekerül a külső i-re egy "referencia".
Biztos rossz a szóhasználatom, vagy nem pontos, de ez a lényeg.
De térjünk vissza a message-queue-ra, ahol már ott csücsül az addEventListener-ben definiált callback, scope-jában az i. Ha megtörténik a click esemény, akkor az event loop kiszedi a message-queue-ból a callback-et és ráteszi a stack-re, ahol lefut majd a callback. Nálunk a callback kiírja az i változó értékét. Mivel ez a callback magával cipelte az i-t, ezért megnézi, hogy a külső környezetben mennyi is az i értéke (az i értéke ekkor már 5) majd kiírja. Ugyanez megtörténik még 4x, mert ugyanarra az elemre, és ugyanarra az eseményre (click) összesen 5 callback-et definiáltunk, tehát az event loop összesen 5x emel át callbacket a stack-re.
Ezért lesz 5x "5" kiírva.
Ugyanez videón, illetve írásosan. Előbbit már láttam, utóbbit még nem olvastam.
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #12012 üzenetére
Ha megfogadsz egy tanácsot, ne azzal töltsd az időt, hogy ezt próbálod megérteni, mert totál felesleges, kezdőknek szerintem nagyon rossz példa. Csak arra jó, ha ilyen feladványokon töröd a fejed, hogy elvegye a kedvedet az egésztől, és még jobban összezavarjon. Mindig is rossz pedagógiai módszernek tartottam, amikor kezdőket szívatnak ilyen "na vajon miért így működik, kitalálod, úgy, hogy még semmi rálátásod nincs az egészre?"-jellegű feladatokkal. Egyetemeken is bevett szokás, de hülyeség.
A kezdőnek először az a fontos, hogy sikerélménye legyen. Hogy örüljön, hogy jé, ez a kód csinál valamit, hoppá, ez pont azt, amit szerettem volna, valami változik/reagál/mozog/működik, hmm, ez most nem megy, ja, de ettől már igen, aha, értem, akkor legközelebb is így csinálom, hú, hogy is írták, aha, így fasza, stb... Inkább így közelítsd meg első körben, aztán ráérsz még megérteni a belső működést, és így csiszolódik a kódod is. Ha nem, akkor majd mi szétfikázzuk, és akkor majd jobban megérted. A számodra egyelőre nem világos rész megértése nélkül is rengeteg egyéb, sokkal érdekesebb feladatot is megoldhatnál.Esetleg ezt is megnézhetnéd az alapokhoz:
http://www.learneroo.com/modules/64
Múltkor valaki ajánlotta ezt a learneroo-t a Programozás topicban, onnan jutott eszembe, így gyors ránézés alapján nem tűnik rossznak gyors áttekintés gyanánt. De amúgy biztos van még n+1 jó, tanulásra szolgáló oldal, csak így kapásból sosem tudok ilyeneket mondani.
Mindenesetre a JavaScript topic összefoglalójában van még jópár hasznos link.(#12014) Jim-Y :
Ha most kezdő lennék, ebből egy büdös szót nem értettem volna. Tele van olyan kifejezésekkel, amik evidens, hogy egy kezdő számára még magasak (és nem azért, mert hülye, hanem azért, mert még örül, hogy egy pársoros kódot átlát). Mindenképp értékelendő az erőfeszítés, hogy próbálod elmagyarázni, de ha már így teszel, és egy kezdővel van dolgod, gondolj vissza, milyen volt, amikor még Te is kezdő voltál, és mennyire örültél, ha valaki el tudta magyarázni konyhanyelven is azt, amit nem értettél, és hogy viszont úgy érezted, szétrobban a fejed, amikor egy szakszavakkal teli magyarázatot elolvastál.Sk8erPeter
-
fordfairlane
veterán
válasz PumpkinSeed #12012 üzenetére
Osztom az előző véleményeket, ne ezekkel foglalkozz.
A programozásnak az egyik legnehezebben megérthető és kezelhető problémája, az ún. konkurencia, amikor időben párhuzamosan, vagy inkább ütemezetten, párhuzamosnak látszó módon egyetlen végrehajtói egység több feladatot lát el. Ez a fajta végrehajtási modell számos problémát vet fel, jellemzően pl. azt, hogy a (látszólag) párhuzamosan végrehajtott szálak hogyan kommunikálnak egymással, hogyan osztják meg az adatokat egymást közt.
JAVA-ban erre való a szálkezelés, Javascriptben az eseményalapú aszinkron feldolgozás. Ez a része a programozásnak önálló tudomány, ami nem kezdő, véleményem szerint az összetettsége miatt még csak nem is haladó szintű téma.
Azt javaslom, hogy ha javascripttel akarsz foglalkozni, márpedig ez a böngészők miatt egyre inkább elkerülhetetlen, akkor ebbe a részbe egyelőre ne ásd bele magad. Foglalkozz inkább azzal, hogy hogyan kell a DOM-ot javascriptből használni, illetve maga a javascript nyelv egyéb alapvető szerkezeteivel (változók, függvények, objektumok, prototipikus öröklődés stb...).
[ Szerkesztve ]
x gon' give it to ya
-
DNReNTi
őstag
válasz PumpkinSeed #12112 üzenetére
Jogos. Rosszul emlékeztem.
but without you, my life is incomplete, my days are absolutely gray
-
Jim-Y
veterán
válasz PumpkinSeed #12114 üzenetére
Ejj .. es hany helyen olvasom a W3-at. Lehet, hogy MAR nem annyira gaz, de ha van nala sokkal jobb (MDN), akkor miert nem azt ajanljak
-
DNReNTi
őstag
válasz PumpkinSeed #12114 üzenetére
Legalább van CSS. Nálunk az se vót.
but without you, my life is incomplete, my days are absolutely gray
-
jocomen
aktív tag
válasz PumpkinSeed #12114 üzenetére
Az majd lehet a Webalkalmazasok fejlesztése II.-n lesz.
-
_ak_
addikt
válasz PumpkinSeed #12128 üzenetére
Abszolúte a véletlen műve...vagy talán azt mondod, hogy arrafelé nincsenek is kutyák?
Let's begin, de gozaimasu!
-
DNReNTi
őstag
válasz PumpkinSeed #12152 üzenetére
Megmondom őszintén nem értem a kérdést.
Ha arra gondolsz hogy miért van #like_button háttérszíne a h3-nak, akkor azé' mer' a #like_button alatta van a h3-nak.Egy border ezt szépen szemlélteti.
but without you, my life is incomplete, my days are absolutely gray
-
martonx
veterán
válasz PumpkinSeed #12152 üzenetére
Mivel nem adtál neki saját színt, és rácsúszik arra a bazi nagy zöld divre. Adtam neki saját színt, így még színsebb lett ez a tuti példa: [link]
Máskor jó lenne, ha nem elcseszett rgba kódokból kellene ránézésre találgatni, hogy az most milyen szín lehet, hanem a példa erejéig olyan színeket használnál, mint én.
Én kérek elnézést!
Új hozzászólás Aktív témák
- Android alkalmazások - szoftver kibeszélő topik
- Bivalyerős lett a Poco F6 és F6 Pro
- TCL LCD és LED TV-k
- Autós topik
- Ezek a OnePlus 12 és 12R európai árai
- Óvodások homokozója
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Azonnali mobilos kérdések órája
- iPad topik
- Politika
- További aktív témák...
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen