- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Honor Magic5 Pro - kamerák bűvöletében
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- Samsung Galaxy A54 - türelemjáték
- Netfone
- Mobil flották
- Fotók, videók mobillal
- One mobilszolgáltatások
- Yettel topik
-
Mobilarena
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
#68216320 #3335 üzenetére
Így keress rá:
jQuery context menulegjobb találatok:
http://medialize.github.com/jQuery-contextMenu/demo/dynamic-create.html
http://www.jquery-plugins.hu/plugin/77-jquery-context-menu.htmlhttp://www.jquery4u.com/menus/right-click-context-menu-plugins/
Azt azonban érdemes lenne mérlegelned, hogy biztos jó-e, ha felülbírálod a jobbklikkes menüt, nagyon sok felhasználó nem szereti (igazából én sem nagyon).
A törlőikonra azt is szokták csinálni, hogy ha a kép föléviszed az egeret, akkor a kép sarkában megjelenik egy piros X, amire kattintva visszakérdeznek, hogy biztosan törölni akarod-e. Szóval az egy jó alternatív megoldás lehet.Szerk.: ja, bocs, ez jQuery plugin, amit linkeltem, hirtelen kevertem a jQuery topic-kal... De remélem, nem gond, kész megoldást plain JavaScriptben most hirtelen nem találtam.
-
Sk8erPeter
nagyúr
Igen, ez így van, egy alias, de attól még nem a prototype szemléltetése, mert ha a prototype-ot akarod szemléltetni, akkor szerintem plain JS-megoldást kell bemutatni, és nem ide is erőltetni a jQuery-t; amit linkeltem, az szerintem kifejezetten jó példa ilyenre.
"Ha a metódusban visszatérsz magával az objektummal, akkor létrehoztad a chainability lehetőségét."
Köszönöm, hogy elmagyarázod, de nekem ez most nem újdonság, de én meg pont azt mondtam, hogy te nem teremtetted meg a chainability lehetőségét, mivel nem tértél vissza az objektummal.
De hidd el, nem kötekedésként írtam, hanem azért, mert nem volt tiszta, hogy ezt vágod-e vagy sem. -
Sk8erPeter
nagyúr
Ezt most nem egészen értem, hol van ebben a példakódban a klasszikus prototype szemléltetése?
A jQuery.fn.blabla = function () { ... } pont egy jQuery plugin megírásának mintája, de a tiéd abból a szempontból sem túl jó, mert beledrótozod, hogy a <p>-kre működjön, nincs chainability, és így tovább (lásd ezt: http://docs.jquery.com/Plugins/Authoring). (Ha már szemléltetés, legyen jó.
)
A klasszikus JS prototype-ra ez egy nagyon jó és gyorsan megérthető szemléltetés:
http://stackoverflow.com/questions/572897/how-does-javascript-prototype-work/4778408#4778408 -
Sk8erPeter
nagyúr
A kivétel akkor keletkezik, amikor tényleg olyan hiba történik, ami indokolttá teszi, hogy ne fusson tovább az adott kódrészlet. Például szerveroldali logika esetén ha hiba történik az adatbázis-kapcsolatban, és éppen az adatok tárolása a cél, akkor nem lenne jó, ha továbberőltetnénk a kód futtatását, hanem megfelelően kezelni és logolni kell a hibát, majd adni egy felhasználóbarát hibaüzenetet. Hasonló vonatkozhat null-lal egyenlő változókon megkísérelt metódushívásokra, stb.
Logikusan kell strukturálni a kódodat, és ahogy Karma is javasolta, olykor az egyszerű feltételvizsgálatok sokkal célravezetőbbek lehetnek, mint a nem kritikus hiba esetén történő kivételdobálások; ha egy kódrészlet lefuttatására meg mindenképp szükség van, akkor nyilván ne tedd a kritikus kódrészlet után, vagy tényleg a try-catch blokkon kívülre kell rakni (ebbe beleérthető a finally is).
Azt gondold végig, nem tudod-e jobban lekezelni az általad említett esetet, a JavaScript beépített függvényei segítségével is rengeteg feltételvizsgálatatot le lehet kezelni, a jQuery metódusai ehhez még nagyon sokat hozzátesznek, valamint ott van még a http://phpjs.org/ is, ahol rengeteg PHP-s függvény egyszerű JavaScriptes átírása szerepel, ez is sokat segíthet."Ezek az én függvényeim, nem csinálnak semmit, csak az első a jQuery objektumhoz "simán" hozzáfűzött függvény, míg a második a jQuery.prototype-hoz fűzött, az első azért dob biztosan kivételt, mert a függvényt a deklarált objektum után hoztam létre, így a meghívott objektumnak nem lesz showText() metódusa, míg a második esetben, prototype-nál igen, így az nem dob kivételt."
Igazából az alapprobléma nekem eléggé homályos, hogy mit is szeretnél elérni, és azt miért nem egy jól megírt jQuery pluginnel teszed. -
Sk8erPeter
nagyúr
(#3291) Karma : megelőztél 1 perccel.
-
Sk8erPeter
nagyúr
De az már külön függvény dolga, ez attól független. Plusz akkor arra is mindenképp figyelj oda, hogy nehogy egy scriptfájlt többször is be akarjon húzni, ezt előtte mindenképp csekkold, hogy nem lett-e már include-olva. Lehet akár csúf globális változóba is tárolni, vagy id-t adni a script tagnek, és annak meglétét ellenőrizni, és egyéb megoldásokon is lehet törni a fejed.
-
Sk8erPeter
nagyúr
Szívesen! A document.head nem minden böngészőben támogatott:
https://developer.mozilla.org/en-US/docs/DOM/document.head
azt hiszem, csak a HTML5 specifikációban rögzítik, hogy ez így valid.
Ha ez a document.head undefined, mert az adott böngészőben nem támogatott, akkor a VAGY-kapcsolatnál lévő értékadás jut érvényre:
document.head = document.getElementsByTagName('head')[0]
így már nem lesz undefined a document.head; a document.getElementsByTagName('head')[0] a legtöbb böngészőben működik, csak valamennyivel lassabb, lásd:
http://jsperf.com/document-head
Persze nem lenne muszáj egyébként ez az értékadás; lehetne úgy is, hogy
var headNode = ( document.head | document.getElementsByTagName('head')[0] );
a hatás elvileg ugyanaz lenne, a headNode a helyes értéket kapná (most nem beszélek arról az esetről, ha valamelyik degenerált kód rosszul bírálta felül a document.head-et), csak utóbbi esetben a document.head-nek nem lenne értékadás, ami egyébként nem is muszáj, nyugodtan kihagyható.
Tehát ha úgy jobban tetszik, az utóbbi értékadást is használhatod.Szerk.: amúgy úgy is átalakíthatod, hogy a függvénynek átadod, hogy melyik elemhez szeretnéd appendelni a script taget. Mindenesetre mivel ez is ismétlődő feladat lehet, mindenképp érdemes szerintem függvénybe rakni, és úgy meghívni (beszédesebb is).
-
Sk8erPeter
nagyúr
Most csak arra a részre reagálok, hogy a document.write() ilyesmi feladatokra ritka kivételektől eltekintve (pl. amikor csak meg akarod mutatni, hogy igen, ilyen is van) sztem elég csúnya megoldás alapból.
Akkor már valahogy így, jQuery használata nélkül:
/**
* Inject a JavaScript file into the header
*/
function injectJavaScriptFile( jsFilename, idOfScriptTag ){
// http://jsperf.com/document-head
document.head || (document.head = document.getElementsByTagName('head')[0]);
var
headNode = document.head,
newScriptNode = document.createElement('script');
newScriptNode.type = 'text/javascript';
if(idOfScriptTag){
newScriptNode.id = idOfScriptTag;
}
newScriptNode.src = jsFilename;
headNode.appendChild(newScriptNode);
}aztán így használhatod:
injectJavaScriptFile('myscriptfile.js');
-
Sk8erPeter
nagyúr
válasz
martonx #3273 üzenetére
Ja, ez teljesen jogos szempont. PHP-ben is előszeretettel kihasználják az emberkék - tisztelet a kivételnek -, hogy egy változóba BÁRMILYEN típust betehetnek (ami előtte int típus volt, az később nyugodtan lehet string, majd objektum vagy tömb is, hiszen ki akadályozza meg ebben), gányolhatnak kényükre-kedvükre, és támogatja céljaik elérésében őket a PHP...
Ebből a szempontból tényleg "veszélyes" eszköz. Mondjuk az objektumorientált kódolás és a láthatóság megfelelő kezelése is macerás JavaScriptben (lásd a korábban linkelt cikkeket). Tényleg az a gáz vele, hogy túlságosan szabad kezet ad. Mondjuk szerintem az is gáz, hogy JavaScriptben alapból nem kötelező a pontosvessző megfelelő használata (mert automatikusan kiegészítődik vele a kód).=======================
(#3272) Jim-Y : szívesen.
-
Sk8erPeter
nagyúr
Chrome-ban: nyitsz egy F12-t, és a sorokat Shift+Enterrel választod el, ennyi.
Operában: Ctrl+Shift+I, és a sorokat szintén Shift+Enterrel választod el, majd Ctrl+Enterrel futtatod.
Egyébként mivel az Opera is Webkitre fog váltani, a Dragonfly meg fog szűnni.Firefoxban: lásd (#3269), vagy Firebug:
Show command editor: -
Sk8erPeter
nagyúr
Mivel semmi kódot nem látunk, így nehéz lesz segíteni. Megnéztem a honlapját, és ott egy 1 perces időtöltés alatt egy normális doksit sem találtam, szóval én nem nagyon tudok miből kiindulni.
===================
(#3261) martonx :
"Mivel aszinkron felépítésű, és a javascript kód gépi kóddá fordulhat, ezért igen hatékony szerver oldalt lehet benne készíteni. Már ha nem lenne a javascript olyan amilyen."
Mármint konkrétan mire gondolsz? -
Sk8erPeter
nagyúr
válasz
trisztan94 #3253 üzenetére
Hát például úgy, hogy a window.onload eseménykezelőjén belül.
Itt folyamatosan a $(document).ready() "szemszögéből" közelítetted meg a kérdést, amikor a kettő más.
Tehát vagy a $(document).ready() eseménykezelőjéről, vagy a window.onload eseménykezelőjéről beszélsz, és kész, a kettőt nem kell keverni.
Ha valamit a window.onload eseménykezelőjén belülre raksz, akkor az ott van, ha meg valamit a $(document).ready() eseménykezelőjén belülre raksz, akkor az meg ott van.Szóval érted, nem kell úgy kezelni a $(document).ready()-t, mint valami felsőbbrendű esemény.
-
Sk8erPeter
nagyúr
válasz
martonx #3246 üzenetére
"csak igyekszek a S.O.L.I.D elvekből minimum a Dry-t betartani."
De melyik a Dry a S.O.L.I.D.-ban?http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
"Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion"De Don't Repeat Yourself (DRY) is van:
http://en.wikipedia.org/wiki/Don't_repeat_yourself
Gondolom erre gondoltál.Most ezt lehetne függvénybe rakni, amit Trisztán írt, hogy mondjuk a
{
mode: "javascript",
theme: "default",
lineNumbers: true
}
objektum legyen a default, de ebben az esetben van értelme? Ilyen az API, a readOnly-t még hozzá kell csapni, és két elem miatt írtál egy függvényt, ami aztán a CodeMirror API-t használja fel, és ki tudja, lehet, hogy később mondjuk rájössz, hogy az adott kódrészletnél nem is JavaScript-kiemelést szeretnél használni, hanem mondjuk PHP-set. Igaz, rakhatod a paraméterek passzolgatását függvénybe, de nem érzem, hogy azzal előrébb lennél, csak egy wrappert húznál kb. azonos mennyiségű kód köré, ami meg viszont már tök felesleges kódbázis-növelés. -
Sk8erPeter
nagyúr
válasz
trisztan94 #3242 üzenetére
"Mint a videóban is látszik,ha document ready-be vannak berakva, akkor a feltöltő oldalon megy, ha azon kívülre, window onload-ba, akkor meg a megjelítő oldalon."
Ezt még mindig nem értem, valami fogalmi zavarokat érzek nálad. Mi az, hogy $(document).ready()-n KÍVÜLRE, window.onloadba? Ez így értelmetlen. A .ready egy jQuery által definiált esemény, az .onload pedig megint egy másik esemény, van eltérés is a kettő között, amire a magyarázatot is gyorsan megtalálhatod:http://stackoverflow.com/questions/3698200/window-onload-vs-document-ready/3698214#3698214
"The ready event occurs after the HTML document has been loaded, while the onload event occurs later, when all content (e.g. images) also has been loaded.The onload event is a standard event in the DOM, while the ready event is specific to jQuery. The purpose of the ready event is that it should occur as early as possible after the document has loaded, so that code that adds funcionality to the elements in the page doesn't have to wait for all content to load."
Szóval nem tudom, honnan jött nálad ez a "document ready-n kívülre, window onload-ba", de ez helytelen, értelmetlen, két különböző eseményről beszélünk, vagy egyikre, vagy másikra feliratkozhatsz egy event handlerrel (mindkettőre is feliratkozhatsz, csak értelmetlen).
Érdekes egyébként, amit írsz, hogy a .ready-vel az egyik esetben nem megy, csak onload-dal.
Egyébként nincs abban semmi gányolás, amit csináltál.
Egyszerűen annyiról van szó, hogy más esemény bekövetkezésére iratkoztál fel egy adott eseménykezelővel.================
(#3243) trisztan94 :
örülök, ha tisztázott egy-két részletet.
Amúgy viszont szerintem ha valaki érteni akarja, mit csinál jQuery-ben, akkor annak értenie kell először az alapokat, szóval sztem sima JavaScripttel érdemes indítani.================
(#3244) martonx :
rakhatta volna mondjuk egy initCodeMirror() nevű csodafüggvénybe, vagy hasonlóba a kódját, de szerintem ettől még nem gányolás, amit csinált.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #3240 üzenetére
harmadik rész, további kételyek vagy félreértések eloszlatására (biztos haladók is találnak benne olyan részeket, amik tisztáznak pár nem triviális dolgot, lásd pl. Variable Hoisting):
-
Sk8erPeter
nagyúr
Egy nagyon jó összefoglaló miértekről és hogyanokról, namespace-ekről, objektumokról, tömbökről, scope-okról, adatrejtésről és hasonlókról (nekem modder linkelte):
Kevés igazán átfogó cikket látni, ami egy helyre gyűjti a különböző konvenciók értelmes magyarázatát, ez szerintem pont olyan, érdemes egyszer elolvasni.
Folytatása:
-
Sk8erPeter
nagyúr
válasz
trisztan94 #3237 üzenetére
A videód eléggé kapkodós volt, igazából nem tudom, hova rohantál, de lehet, hogy többet ért volna egy kicsit tökölősebb videó.
Az a baj, hogy a kódod többi részében nem vágjuk, mi történik, mi kúrhatja el a megjelenítést, még ennyi infó is kevés ehhez. Azt meg nem értettem, amit egy másik hsz.-ben írtál, hogy a $(document).ready()-n KÍVÜLRE raktad azt, amit írtam... heh?Most ide felraktam még egy példát, elölről kezdve, hátha valami para ennél is előjön, de nem volt semmi gond:
http://jsfiddle.net/Sk8erPeter/TcqAf/
Nálad lehet, hogy valami szükséges fájl nincs betöltve.
===============
(#3238) Dave-11 :
szívesen! -
Sk8erPeter
nagyúr
válasz
trisztan94 #3233 üzenetére
"Lehet, hogy az a baja, hogy külön fájlba van?"
Az biztos, hogy nem, ha megfelelően, sorrendben include-olva van.
Az viszont nagyon nem mindegy, hogy pl. vajon onloadra van-e kötve.
Így:
http://jsbin.com/esomel/1/editSzóval így próbáltad? Még egy kis infó kéne, hogy rájöjjünk, mi lehet a para.
======================
(#3232) Dave-11 :
"Arra a változós módszerre én is gondoltam, csak először kicsit megijedtem tőle"
Ne félj, nem vagy egyedül, itt vagyunk veled. -
Sk8erPeter
nagyúr
válasz
Dave-11 #3230 üzenetére
"PHP-val egy adatbázisból íratom ki a bejegyzéseket, egy while ciklussal, és akkor hogy állítsak különböző id-t"
Te magad írtad le a kulcsszót... ciklus... pl. létezik olyan, hogy ciklusváltozó, aminek az értékét minden lépésnél növeled eggyel.Például:
$i = 1; // most direkt egyről indítom
while($cikk=mysql_fetch_assoc($adat)){
// ....
echo '<input type="text" class="hozzaszolas" id="hozzaszolas_' . $i . '" />';
// ....
$i++; //növeled
}nem egy nagy misztikum, így olyan id-jeid lesznek, hogy hozzaszolas_1, hozzaszolas_2, stb...
de én a helyedben inkább a cikknek az id-jával helyettesíteném, például így:echo '<input type="text" class="hozzaszolas" id="hozzaszolas_' . $cikk['id'] . '" />';
(persze csak ha id kulcs létezik)
hogy OFF-oljak is egy sort, ha már PHP-kód:
az elavult és szar mysql_query-s bohóckodásról még most szokj le, és szokjál rá a PDO-ra (Tele von Zsinór kolléga gyors áttekintő cikke: http://maerlyn.eu/2011/12/03/pdo.html). Objektumorientált adatbázis-wrapper, prepared statementekkel.
Ha ennél meggyőzőbb érv kell:
http://prohardver.hu/tema/php_kerdesek_2/hsz_10152-10152.htmlmásik:
echo "<input type='text' id='hozzaszolas' />";
ezt szintén felejtsd el. A macskakörmöt hagyd meg HTML-kódnak, a PHP-kódban pedig használj sima aposztrófot:
echo '<input type="text" id="hozzaszolas" />';
Gyorsabb is (nem kell változó-behelyettesítéssel foglalkozni aposztróf esetén). -
Sk8erPeter
nagyúr
Na most hirtelen nekem nem esik le valami, úgyhogy én kérnék szépen iránymutatást.
Ide felraktam valakinek egy példát a jQuery Countdown pluginról:
http://jsbin.com/icisuy/2/edit
A lényege, hogy számoljon vissza 2013. dec. 31., 23:59:59-ig.
Ezért így inicializáltam a dátumot:var myDate = new Date(2013, 12, 31, 23, 59, 59);
ez alapján elvileg jónak kéne lennie:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Datenew Date(year, month, day [, hour, minute, second, millisecond]);
ennek ellenére a toString alapján ez jön ki:
Fri Jan 31 2014 23:59:59 GMT+0100 (Central Europe Standard Time)
most itt az időzónabeli különbséggel nem tudtam magyarázni, mivel ez konkrétan egy hónapnyi eltérés pluszban.
Miért?============
Szerk.: jól van, leesett, benéztem.
month
Integer value representing the month, beginning with 0 for January to 11 for December.Tehát így lesz jó:
var myDate = new Date(2013, 11, 31, 23, 59, 59);
-
Sk8erPeter
nagyúr
válasz
trisztan94 #3223 üzenetére
De, jsFiddle-re is fel tudod így rakni, úgy, hogy az "Add resources" résznél bepakolod a fájl elérési útját, innen:
https://github.com/marijnh/CodeMirror/tree/master/lib
konkrétan ezt:
https://raw.github.com/marijnh/CodeMirror/master/lib/codemirror.js
és ezt:
https://raw.github.com/marijnh/CodeMirror/master/lib/codemirror.cssMondjuk mostanában nem tudom, mi van a jsFiddle-lel, elég sokat b@szakodik, de használhatod a jsbint is, meg a tinkerbint is, annyi a különbség, hogy ezeknél <script> tagben adod meg, az src attribútum használatával.
Amíg nem mutatsz konkrét kódot, sajnos nem tudjuk megoldani a hibádat. -
Sk8erPeter
nagyúr
válasz
trisztan94 #3215 üzenetére
Ha mondjuk megnyitnád a konzolt (F12 vagy Ctrl+Shift+I, Console fül), és azt is elmondanád, ott látsz-e hibát, sőt, esetleg még jsfiddle-re vagy jsbinre vagy tinkerbinre felraknád a kódot, hogy kész változatot lássunk, akkor biztos előrébb lennénk.
-
Sk8erPeter
nagyúr
Ezt a Visual Event bookmarkletet vágjátok?
http://www.sprymedia.co.uk/article/Visual+Event+2
"Visual Event is an open source Javascript bookmarklet which provides debugging information about events that have been attached to DOM elements. Visual Event shows:
» Which elements have events attached to them
» The type of events attached to an element
» The code that will be run with the event is triggered
» The source file and line number for where the attached function was defined (Webkit browsers and Opera only)
» In addition to being useful for debugging your own code, Visual Event can be used as an educational tool, showing how many web-sites have been authored."Van Opera-extension is:
https://addons.opera.com/en/extensions/details/visual-event-2/?display=enSzépen mutatja az event handlereket, ha az adott elem fölé visszük az egeret, például most megnéztem a jquery.com-ot, az alsó Quick Access mező fölé vittem:
Ezt elvileg lehet a developer toolbar segítségével is, de szerintem sokkal macerásabb, meg nem ennyire gyorsan áttekinthető.
-
Sk8erPeter
nagyúr
Az e.target.value sem rossz, de jelen esetben a this.value beszédesebb lehet, meg első ránézésre is könnyen érthető. Tehát
$("#ar").text(e.target.value);
helyett itt
$("#ar").text(this.value);
is teljesen jó: http://jsfiddle.net/4qbAg/3/Ettől függetlenül jó megoldást mutattál!
-
Sk8erPeter
nagyúr
válasz
Dave-11 #3184 üzenetére
Szerintem nem kár, hát pont ezt írtam korábban, hogy a randomizálás nem sok kép esetén hülyeség, mert akkor könnyen előfordulhat az, hogy egymás után ugyanazok a képek jelennek meg fadeTo-val.
Viszont tudja a randomizálást is:
http://jquery.malsup.com/cycle/begin.html4 - Choose Other Options
...
$('#s6').cycle({
fx: 'scrollDown',
random: 1
}); -
Sk8erPeter
nagyúr
válasz
Dave-11 #3180 üzenetére
Nem rossz, de ezzel a randommal az a baj, hogy kevés elemnél nyilván könnyen előfordulhat, hogy ugyanaz a kép többször előfordul egymás után.
Amúgy a jsFiddle-re felrakott kódnál nincs szükség a html, head részre.jQuery Cycle pluginnel, mint könnyen konfigurálható alternatíva (ehhez az "Add Resources"-nél beraktam a plugin JS-fájlját:
-
Sk8erPeter
nagyúr
Hehh:
http://prohardver.hu/tema/jquery_kerdesek/hsz_1742-1742.htmlMost nem tudom, miért szottyant kedvem eltölteni 10 percet azzal, hogy ezt csak azért is megtaláljam.
(mondjuk csak végig kellett pörgetni a másik topicban a hsz.-eidet, és az összes jsFiddle-példára ráklattyintani
)
-
Sk8erPeter
nagyúr
Ja OK, de végül is workaround lehet a háttérkép-változtatás helyett a sima img tagekkel szórakozás, ezért írtam, tudom, hogy itt nem konkrétan backgroundok változtak.
így meg így meg így kerestem a nevednél, ezek alapján még nincs meg, szóval nem tudom, melyikre gondolsz
Szerk.: piros-zöld négyzetek már megvannak:
http://prohardver.hu/tema/javascript_topic/hsz_3035-3035.html
De ennek nincs sok köze a témához, szóval sanszos, hogy nem erre gondoltál, vagy nem vágom -
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Vágom, hogy ott miért nulláztad úgy, de akkor is felesleges.
Appendelni később is tudsz, miután sima text()-tel felülírtad az ott lévő szöveget.
Ja, valóban, egy zárójellel elnéztem (megmondom őszintén, csak átpörgettem a kódodat), és nem az .each-ben van a függvénydefiníciód, hanem a .click() eseménykezelőben, az sem sokkal jobb...
Egyébként sztem ez annyira nem volt jó példa arra, hogy a jQuery-ben kevesebb kóddal is meg lehet oldani a dolgot, mert Te meg jQuery-ben írattál ki sok olyan infót, ami igazából indokolatlan, mint pl. a "Legnagyobb páratlan szám", "\n\nÖsszegük" és a többi statikus szöveg.Itt a korábbi plain JS-kódot lehetett volna úgy is módosítani, hogy rövidebb és jóval szebb legyen.
Persze félre ne érts, azért jó, hogy mutattál alternatívát. -
Sk8erPeter
nagyúr
válasz
martonx #3169 üzenetére
Hát én annak idején a plain JS tanulmányozásával kezdtem, persze a mai napig vannak újdonságok, és egyáltalán nem mondom, hogy "rendesen" beleástam magam, de azért legalább nem okoz problémát, ha a plain JS-hez kell nyúlnom....ettől függetlenül nem sírom vissza a plain JS-es kódírkálásokat, azért nagyon sok kód a sokszorosa lehet tényleg, mint jQuery-vel megírva, ha már library, és ha már össze van gyűjtve olyan tudásbázis, amire építve már lehet cross-browser-közeli kódot írni, kevesebb macerával: például hogy sok-sok függvény megírásával nem neked kell tökölni, meg ahogy a honlapon is írják, kevesebbet kell gépelni. Persze lehet minden köré valami saját wrappert írni, de akkor már lassan ott tartunk, hogy felfedezzük a spanyolviaszt.
Szóval én nagyon szívesen váltottam át jQuery-re, és nem nagyon vágyom rá, hogy plain JS-ben írogassam a kódjaimat, csak ha nagyon muszáj. Tehát szerintem nem kár átváltani, még ha erőforrás-igényesebb is, igényesen megírt kód nem azon fog elvérezni, hogy pár(tíz) milliszekundummal később fut le a kód.
Mobilnál nincs tapasztalatom, ott biztos más a helyzet, és ott azért számít az erőforrásigény-beli különbség."Ráadásul a css3 animálásokban is annyira erős, hogy az alap jquery-vel megoldott animálások szerepét is simán át tudja venni."
Itt mire gondolsz? -
Sk8erPeter
nagyúr
Szerintem az ember akkor ismerkedjen meg a jQuery-vel, ha már van plain JavaScriptben valami megalapozott tudása.
Persze ezzel lehet vitatkozni, de nem árt, ha az ember tudja, milyen munkától kíméli meg egy library, mi történik a háttérben, különben problémás működés esetén az ember csak néz majd nagyokat.Szerk.:
miért rakod OFF-ba a jsFiddle-példákat?Ez eléggé ON.
$("#num_array_result").text("").append("A számok:\n");
Ennek mi értelme?
Akkor már:
$("#num_array_result").text("A számok:\n");
Az isOdd függvényt miért az .each-en belül deklarálod?
Na jó, nem nézem tovább. -
Sk8erPeter
nagyúr
válasz
Dave-11 #3161 üzenetére
Esetleg innen összeszedheted az alapokat:
http://nagygusztav.hu/web-programozas
van benne külön JS-rész is.
Csak belepörgettem, az alapján az alapokhoz talán jó lehet. Csak az ilyen document.urlap.tipus[0].checked-jellegű kódokat ne jegyezd meg, és ne használd majd a későbbiekben.Amiket leírtál, azok egyébként lazán összeguglizhatók. Én speciel össze-vissza ugráltam a tanulásban, rendszertelenül kutakodtam mindenféle engem érdeklő probléma után, könyvtárból kivettem szakkönyveket, e-bookokat nézegettem, példakódokat bújtam Guglizás után, nálam nem volt különösebben rendszer a tanulásban, de aztán szép lassan kezdett összeállni a kép, bár így is nyilván van egy csomó minden, amiről még fogalmam sincs.
Mindenesetre webprogramozós versenyen bátorság elindulni JavaScript-tudás nélkül, mikor lesz? Mennyi időd van felkészülni? -
Sk8erPeter
nagyúr
A páros, páratlan számok tömbjének kiíratásáig volt kedvem foglalkozni vele:
Kerüld az onclick()-et, inkább oldd meg úgy, ahogy írtam, kerüld a document.forms.satöbbibaromságokat, inkább használj id-t az elemekhez, és azonosítsd őket egyértelműen, vagy class alapján, vagy ilyesmi.
Meg használd a JavaScript tömbjeinek metódusait, kényelmesebbé tehetik a kódodat.
Ezenkívül kerüld az ilyen t, t1, t2 és hasonló fantáziadús változóneveket, később fingod sem lesz róla, az a változó az mit csinál, mi a szerepe, tehát nyugodtan írj jó hosszú, egyértelmű neveket, sokkal hasznosabb, legalább tudod, mire való.
Kikommenteztem a kódban direkt egy-két részt, hogy lásd, mi változott.
Ja, és a W3C validátorát is érdemes használni a kódodra, mert elég sok hibát tartalmazott.
Remélem, innentől menni fog, ne kérd senkitől, hogy csinálja meg teljesen a kódodat, ha elakadtál valamiben, kérdezz rá, mi nem megy, és akkor abban szívesen segítünk. Mondjuk szerintem így is már sok segítség volt a fenti. -
Sk8erPeter
nagyúr
Javaslom, hogy tedd fel ezen helyek valamelyikére, ahol online is egyből kipróbálható lesz a kódod:
http://jsfiddle.net/
http://jsbin.com/Ehhez még regisztrálnod sem kell. A használatára az előző hsz.-emben láthatsz példát.
Azért javaslom ezt, mert másnak is túl drága az ideje ahhoz, hogy a hsz.-edben próbálja kihámozni a kódod működését, ha viszont egyből működés közben látja, akkor nagyobb eséllyel talál rá megoldást, a Te gondod pedig hamarabb oldódik meg. -
Sk8erPeter
nagyúr
Szerintem a legtisztább megoldás a jQuery-s .data() használata, amivel data-attribútumok állíthatók be; tisztább, szárazabb, biztonságosabb érzés.
A kód nem lesz csúnya tőle.
Átalakítva a saját korábbi demómat, készítettem egy újabbat neked:http://jsfiddle.net/Sk8erPeter/HLT3J/2/
Külön-külön nyilvántartható így az aktuális beállítandó background-position és az aktuális kívánt irány is.
Aztán ezt ízlésednek megfelelően átalakíthatod. -
Sk8erPeter
nagyúr
Ja, jogos, erre nem lett felkészítve a korábbi kód. Most érdemben nincs időm foglalkozni vele, de ja, a this a megfelelő kulcsszó, a .hover() eseménykezelőjén belül például:
$(this).css('background-position', .......);
Viszont azzal számolj, hogy így több elemnél nyilván kell tartani az összeshez tartozó épp aktuális scrollozást, vagy csak a jelenlegihez képest tologatni mindig, mindenesetre azért át kell variálni a kódot. -
Sk8erPeter
nagyúr
Szerintem a JS nélküli működésre itt nem érdemes építeni, legfeljebb CSS3-as újításokkal megoldani az animációt, amennyiben a böngésző támogatja, amennyiben nem, na akkor lépne életbe a JS-sel való animálgatás, pont ilyenekre nagyon jól használható például a Modernizr, ezt tudom ajánlani, mert ilyenekre nagyon fasza. Én például olyanra használtam (csak egy kiragadott példa), hogy alapból CSS3-mal animáltam egy menü fel-lecsúszkálódását, aztán egy jQuery-kódban pedig a megfelelő Modernizr által JS-sel beállított class meglétét ellenőriztem, így tudtam csekkolni, adott böngészőben megvan-e a CSS3-as property támogatása, vagy sem (pl. IE8), ha nem, csak akkor kellett a jQuery-vel animálgatást beizzítani. Szerintem ez manapság járható út.
A két ötleted közül az elsőt én abszolút jónak tartom, én asszem azt választanám. Esetleg egy data-attribútummal (http://api.jquery.com/data/) is be lehetne állítani a hoverre betöltendő képet.
-
Sk8erPeter
nagyúr
Szívesen!
"Konkretan video previewnak lenne, tehat fix ertekkel kene kockat ugrania , majd elorol."
Na várj, és azt miért pont background-image-dzsel akarod megoldani? Már ha jól értem. Mondjuk végül is nem egy elvetemült gondolat, mert akkor csak egyszer kell betöltődnie, így kevesebb a request. Viszont annyiból nem biztos, hogy jó, hogy így ha kiraksz mondjuk 100 video preview-t, akkor 100 nagyobb képet kell betöltenie, mint amennyit szükséges, mert sanszos, hogy a júzer nem fog hoverezni mind a 100-ra. Szóval lehet, hogy érdemesebb lenne inkább különálló, de azonos méretű képeket betöltögetni szépen animálva. De persze ismerni kéne a konkrét körülményeket, meg a feladatot, mert végül is a jó megoldás kiválasztása nem triviális.Szerk.:
(#3140) Soak :
na ja, így is lehet, pixelekkel, de nem biztos, hogy "biztonságos", mert ha a kép keskenyebb/szélesebb, akkor az eltologatások nem biztos, hogy pontosak lesznek, a százalékos megoldás talán ennyiből jobb lehet.
Igaz, gondolom nálad úgyis fixálva lenne a háttérkép mérete, mindegyiknél azonos képkocka lenne.
És amúgy mi volt az oka, hogy a széles background-image-re esett a választás? Annak egyszerűsége? -
Sk8erPeter
nagyúr
Hali!
Most gyors kikapcsolódásként készítettem neked egy példademót, aminek a kódját már könnyen át tudod írni:
http://jsfiddle.net/Sk8erPeter/HLT3J/
Szerk.: a lényege, hogy százalékos alapon növelgeti-csökkentgeti a background-positiont, ezáltal jobbra-balra scrollozódik a background-image.
Lehet szépíteni a kódon, akár plugint is lehetne belőle készíteni. -
Sk8erPeter
nagyúr
válasz
Santosh #3135 üzenetére
"Szeretnék tanulni programozni java-ban."
Akkor nagyon rossz helyen jársz. Ez a JavaScript topic.
Első leckeként nézz utána, mi a Java és JavaScript közötti különbség, mert NAGYON nem ugyanaz a kettő.Ha ez megvan, itt van a Java topic:
http://prohardver.hu/tema/java_topic/friss.html -
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Felraktam neked ide egy minidemót:
http://jsbin.com/afuyon/1/edit
A <head>-be kell betenni az alábbi kódot:
<script type="text/javascript">
var confirmLeavingSite = true;
window.onbeforeunload = function(){
var confirmLeavingSiteMessage = "You are going to leave this site. Are you sure?";
if(confirmLeavingSite){
return confirmLeavingSiteMessage;
}
}
</script>Úgy tudom, jelenleg ennek az ablaknak a megjelenését a beépített alert() és confirm() ablakokhoz hasonlóan nem tudod felülbírálni.
-
Sk8erPeter
nagyúr
BÚÉK!
"úgy, hogy a .button és a .buttonGroup css-hez nem nyúlhatok"
Hogy érted, hogy nem nyúlhatsz hozzá, ha HTML-ben adhatsz hozzá elemeket, meg CSS-sel formázhatod az új markupot?Egyáltalán ez hogy jön a JavaScript topichoz?
Az sem ártana, ha calss helyett class-t írtál volna.http://prohardver.hu/tema/css_megjelenitesi_problemak/friss.html
-
Sk8erPeter
nagyúr
válasz
Skynet258 #3116 üzenetére
"csak valamiért a téma a JS-t hívja meg"
Olyan nincs, hogy a "JS-t hívja meg", legfeljebb egy JavaScriptben megírt függvényt/metódust lehet meghívni.Úgy tűnik, mintha minden egyes link tartalmát Lightboxban akarná megjeleníteni, az alapján, amit leírsz, de eléggé meglepne, ha nem lenne erre valami konfigurálhatóság, hogy mit akarsz ebből kizárni. Ezért mondtam, hogy mutass már egy képernyőképet (screenshotot) a szerkesztőfelületről, de nem tetted.
Szerk.:
egyébként meg azért linkeltem itt a WordPress-fórumokat, mert ott biztos van tapasztalat erről. -
-
Sk8erPeter
nagyúr
válasz
Skynet258 #3114 üzenetére
Na várj, szerintem félreértesz.
Azzal nincs semmi baj, hogy képet linkelsz valahova. Igazából az most mindegy, hogy a link egy szöveg vagy kép, tehát hogy az <a></a> tagek közt mi van. Az oldalad meg jól néz ki, nincs vele baj, tehát nem azt elemeztem.
A vászonszerű megjelenítés alatt azt értem, amit a Lightbox, Fancybox, Colorbox és társai csinálnak: felugrik egy "kisablak", és a háttérben lévő dolgok pedig elhomályosulnak, mintha eléjük kerülne egy átlátszó fekete vászon vagy függöny, vagy mintha valaki lekapcsolná a lámpát, és a figyelem középpontjába a felugró kép, iframe, szöveg vagy akármi kerülne (reflektorral megvilágítva a színpadon).
Amikor itt rákattintasz bármelyik linkre, akkor ez történik.De amikor linkelsz a Google Play oldalra, akkor ennek semmi köze nem kéne, hogy legyen egyáltalán a Lightboxhoz, Fancyboxhoz, Colorboxhoz vagy bármihez. Egy sima, egyszerű, mezei link kellene, hogy legyen, nem kéne, hogy az előbb említett JavaScript-pluginek valamelyike ráerőltesse a linkre magát. Erre kellene, hogy legyen valami beállítás.
Amikor szerkeszted ezt a cikket, akkor hogyan szúrod be a képet, hogy néz ki a szerkesztőfelület? Gondolom valami WYSIWYG-alapú szerkesztő van ott. De a cikk bepötyögése után a képeket hogy pakoltad be? Arról tudsz mutatni mondjuk egy screenshotot?Erre gondolok, hogy ilyen egy "mezei" link, csak simán mutat valahova, kattintásra odavisz:
http://jsbin.com/adoket/1
Katt a jobb fölső sarokba, ott láthatod, mi a kódja, semmi Lightbox, Colorbox, Fancybox nincs a dologban. -
Sk8erPeter
nagyúr
válasz
Skynet258 #3112 üzenetére
Na várj, egyszerűsítsük le a dolgot először: igazából itt pont nem értem, minek kell egyáltalán ilyen vászonszerű popupban megjeleníteni az oldalt. A "Get it on Google Play" miért nem csak egy sima link a külső oldalra, és kész? Miért kell ehhez JavaScript?
Ja, és fontos, hogy itt nem Java-ról, hanem JavaScriptről beszélünk.
"Így most arra jutottunk (egy olvasóm ért a JS-hez valamelyest, vele próbálkozunk), hogy nem bántjuk a beépített Lightboxot-ot, inkább meg kéne javítani, hogy menjen a link képpel."
Ha a Lightbox eleve nem képes az iframe-es megjelenítésre, akkor a Lightbox "bántása" nélkül nem fog menni a dolog.Max. egy másik megoldással, de ha ragaszkodsz a külső oldal vászonszerű megjelenítéséhez (ami mondjuk itt sztem nem indokolt, de ez magánvélemény
), akkor muszáj lesz bevetned valami plugint. Amúgy valószínű, hogy az van, amit mondtál, hogy a két library valamilyen oknál fogva összeakad, mert mondjuk a WordPress plugin vagy theme vagy valami ezzel kapcsolatos nem kezeli megfelelően.
-
Sk8erPeter
nagyúr
válasz
Skynet258 #3109 üzenetére
Nem ismerem a WordPress-t, így nem tudom, hova lehetne nyúlni, hibanaplóban nem jelez-e valami problémát, nincs-e státuszriport arról, hogy esetleg valami függőség hiányzik (Drupalnál a jobb modulok jelzik, ha valami nyűgjük van), és így tovább, így most nem tudom konkrétan megmondani, mi lenne a megoldás. Először nem néztem az oldalad forráskódját, azt hittem, saját kód, vagy ha külső, akkor is bele tudsz nyúlni a kódjába. Gondolom ezt a részét annyira nem vágod még.
Mindenesetre alapszabály, hogy soha nem kísérletezgetünk éles oldalon!!
Inkább töltsd le FTP-n keresztül, rakj fel egy helyi webszervert (akár egy EasyPHP-s gyorsmegoldás is megteszi, nem tudom, milyen platformra kéne, Windows-t vagy Linux/UNIX-alapú rendszert használsz-e), és ott üzemeld be az oldalad, az az egészséges, ha ott próbálgatod, mert akkor az éles rendszerben nem tudsz kárt tenni, meg a látogatóid nem látják a próbálgatásaidat (így nem tapasztalhatnak furcsa anomáliákat, ami csökkenti a felhasználói élményt).A két slide-hoz milyen plugin tartozik, azt nem tudod megnézni? Vagy ezt a slide-ot az oldalhoz tartozó theme/smink rakja oda? Nagyon kell egyébként, hogy a Google Plus oldalra mutató link popupban jelenjen meg?
Amúgy az a gáz, hogy ez inkább WordPress topicba tartozna, mert a CMS-ekben az ilyen kész plugineknél és sminkeknél az ilyen gyakori megoldásokhoz (mint ez a főoldali slide) ritkábban van szükség egyedi kódmódosításokra, szóval valszeg csak WP-tapasztalat kell hozzá. Ha tudsz angolul, megpróbálhatnád itt, itt biztos egész gyorsan válaszolnak:
WordPress Answers - Stack Exchange
Aztán gondolom ez a hivatalos magyar fórum:
http://kozosseg.wphu.org/forumok -
Sk8erPeter
nagyúr
válasz
Skynet258 #3107 üzenetére
Szerintem térj át a Fancybox-ra vagy Colorboxra, itt írják is, hogy nem támogatja az iframe-ek vásznon történő megjelenítését a Lightbox: [link].
Aztán ha az megvan, akkor majd még írj, és akkor segítünk annak a beüzemelésében is.Fancybox iframe-re itt vannak példák, egyből a főoldalon:
http://fancybox.net/
(lásd Google maps (iframe), Youtube (iframe))Colorbox iframe-re itt:
http://www.jacklmoore.com/colorbox/example5/
(lásd Outside Webpage (Iframe)) -
Sk8erPeter
nagyúr
http://stackoverflow.com/questions/572897/how-does-javascript-prototype-work/572996#572996
http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript/310914#310914
==============
Szerk.:
a jQuery NEM framework, hanem library. -
Sk8erPeter
nagyúr
Ennyiből van közük egymáshoz:
http://en.wikipedia.org/wiki/JavaScript
"JavaScript copies many names and naming conventions from Java, but the two languages are otherwise unrelated and have very different semantics."
Annyit próbáltam tudtodra adni, hogy a Java belédverhette volna, hogy értelmezhető kódot írj.Remélhetőleg ott sem művelsz ehhez hasonlókat, mint amit korábban próbáltál.
Most igazából mi a kérdésed?
-
Sk8erPeter
nagyúr
Ezt a degenerált példát honnan szedted?
Egyébként nem is értem, miért akarsz ilyet erőltetni, tudtommal programozgatsz Java-ban elég aktívan, nem? Akkor az valami mintát kellett volna, hogy adjon. Más a két nyelv, de azért van hasonlóság elvekben és ilyesmikben, sokszor szintaktikában is.Létre kellene hoznod egy Person objektumot, abból leszármaztatni, és létrehozni egy Author objektumot, vagy hasonló, azt bepakolni egy tömbbe, sok megoldás létezik. De legyen valami logika az egészben.
function Person(name, age){
var self = this;
self.name = name;
self.age = age;
}
var person1 = new Person('Béla', 21);
console.log( "First person's name: " + person1.name );Most ez mondjuk szintén nem százas példa a Person osztályra, mert itt publikus változókat használok, de kezdetnek jó; de lehet privát változókat is, olvasgasd el ezt, meg a belinkelteket is:
-
Sk8erPeter
nagyúr
De most itt hol látsz olyan bugot, amiről beszélsz?
http://jsfiddle.net/Sk8erPeter/jJaLB/1/
csak mert ha nem tudod reprodukálni a hibát, amiről szó van, úgy elég nehéz lesz debuggolni is.
Nem tudom elképzelni, konkrétan hogyan néz ki a kódotok (még mielőtt megint megtennéd, nem kell említeni, hogy hány 0 van a projektben, mert nem érdekel senkit, ahogy ha megosztasz pár plusz részletet a kódodból, akkor sem fogja tudni reprodukálni az eredeti projektet senki), nem gányolástól merül-e fel a probléma, amit említesz.
Mutass olyan esetet, ahol előfordul a hiba, és akkor esélyes, hogy tudunk segíteni érdemben is. És ne minket hibáztass, ha nem tudjuk reprodukálni a hibáitokat. -
Sk8erPeter
nagyúr
válasz
martonx #3090 üzenetére
Sajnos nincs tapasztalatom ilyennel, de hátha ezek:
http://stackoverflow.com/questions/9983360/tooltips-wanted-pure-javascript
http://stackoverflow.com/questions/11475319/smallest-tooltip-script-no-jquery
bár gondolom ezeket megtaláltad...
Bocs, hogy konkrét tapasztalat híján belevauvauztam.
-
Sk8erPeter
nagyúr
Nem ártana, ha legalább szintaktikailag helyes lenne a kódod.
Te ezt írtad:
<div id="base">
<tr>
</tr>
</div>
De a table-t kihagytad.... ez így nem is fog működni helyesen.<div id="base">
<table>
<tr>
</tr>
</table>
</div>
így már kezdetnek jó... meg hogy meg lehessen különböztetni, nem árt jól elkészíteni a példát
Például hogy legyen valami háttere, ilyesmik.
Na, szóval itt nem az általad elvártak szerint működik?
http://jsfiddle.net/Sk8erPeter/jJaLB/1/
Szerk.: na, elkéstem, mert próbáltam kihozni valami értelmeset a dologból...
-
Sk8erPeter
nagyúr
mert ma mi történt? Megkaptál egy 0-t a munkád eredményéből? Vagyis 0 Ft-ot hozzádvágtak?
Egyébként jó, hogy elbeszélgetünk a semmiről, hogy nem tudtad megoldani.
Mármint számomra semmi, mert semmit nem osztottál meg róla, hogy konkrétan mi a baj a kódoddal.
Ja, de. $('#000'), csak hogy jelezd, hogy sok a 0 a projektedben (n+1-edszer) -
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Annyira nem furcsa mivel CSS3-as dologról beszélsz...
Nem minden böngésző támogatja ezeket. Bár elvileg az aktuális nagyobb böngészőknek kellene támogatniuk.
http://www.w3schools.com/cssref/tryit.asp?filename=trycss3_text-overflow
itt tudsz vele játszani -
Sk8erPeter
nagyúr
Miért erőlteted ezt az "index" szót?
Szerintem te a függvény argumentumára vagy paraméterére gondolsz, ezt nem úgy hívják, hogy "index".
"mind a tíz oszlopra van egyesével egy qrva nagy onclick, és szintén qrva nagy hover fv, úgy, hogy $oszlop1.onclick(...), $oszlop2.onclick(...) stb, tehát ugyanaz a kód háromnegyede, az indexektől eltekintve.
[...]
Most csak az "egy indexes bind" kell milyen szép szakkifejezés, aminél egy for ciklusba rakok egy onclick-et, és egy hover-t"Erről beszéltem korábban, hogy értelmesebb lenne hozzáadni az elemekhez egy-egy közös class-t, mint hogy for ciklusokba pakolt eseménykezelőkkel szopasd magadat... miért csodálkozol, hogy előfordult a korábbi probléma, hogy duplán futott le az az eseménykezelő is, aminek nem szabadott volna? Már önmagában a leírásaid is azt tükrözik, hogy valamiért itt tákolás történik gányolás hátán.
Az sem egészen világos, most miért láttál ekkora potenciált a plain JS-es .bind()-ban, miért akarod most mindenáron ezt alkalmazni, amikor enélkül is nyugodtan lehet paramétereket passzolgatni. Adott esetben indokolt lehet, de nem mindig.Amiről korábban írtam, az az, hogy lehetne közös csoportként kezelni az elemeket, ha lenne közös class-uk, arra az elemre, aminél meg kivételt kell tenni, megint egy másik class-t kell tenni, és akkor rohadt könnyen tudod kezelni őket, óriási kódok ismételgetése nélkül (pfuj).
Na, mondjuk mutatok egy példát, ahol a .group1 class-szal rendelkező elemek mindegyikén van egy .hover(), és mindegyikre alkalmazva van egy explode effect, kivéve azokat, amik meg vannak jelölve a kivételt jelentő group1-exception osztállyal (amik itt a példámban a fekete bárányok):
http://jsfiddle.net/Sk8erPeter/GVy7b/
Az elv a lényeg, hogy csoportokra írok event handlereket, nem egyenként.
-
Sk8erPeter
nagyúr
Hát pedig a doksi elolvasása és felfogása a legtöbb esetben rövidebb ideig tart, mint megírni két-három értetlenkedő hsz.-t.
Na várjál, azért ne ess át a ló túloldalára, senki nem mondta, hogy a plain JavaScriptes .bind() alkalmazása a jó módszer argumentumok függvénynek történő átadására!! Ez most csak egy példa volt, ez nem azt jelenti, hogy így is kell mindig alkalmazni, teljesen esetfüggő, mikor jó ennek a használata. Azért most ne kezdj el izomból, gondolkodás nélkül átírogatni mindent...
-
Sk8erPeter
nagyúr
Nem értem, pontosan mit szeretnél, de te szoktál egyébként egyáltalán valaha dokumentációt olvasgatni?
Most komolyan, ne vedd bántásnak, de nem úgy néz ki, mintha nem teljesen a fórumra bíznád magad...https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
Syntax
fun.bind(thisArg[, arg1[, arg2[, ...]]])
Parameters
thisArg
The value to be passed as the this parameter to the target function when the bound function is called. The value is ignored if the bound function is constructed using the new operator.
arg1, arg2, ...
Arguments to prepend to arguments provided to the bound function when invoking the target function.Itt van egy totál értelmetlen változata annak, amit korábban Karma belinkelt, átadva a "kiskutya" stringet annak a bizonyos függvénynek:
-
Sk8erPeter
nagyúr
"az a baj, hogy ezzel a counterrel csak "egyszer" fut le, de duplán. úgymond többször már nem, de először mindig duplán."
Hogyan írtad meg a kódot?
Egyébként azt látod, hogy a jsFiddle-kód helyesen működik, ugye?Az alkalmazásról meg semmit nem tudunk (csak azt, amit már sokszor elmondtál, hogy sok a 0 a végén, és helyetted kódolunk
), nem lehet, hogy az eseménykezelő valamiért kétszer van megírva?
Nem valami olyan függvényen belülre került ez az eseménykezelő (a mouseoveres rész), ami a betöltődés után kétszer is meghívódik?
Abból kiindulva, ahogy itt is akartad megírni az eseménykezelőt...===============
Szerk.:
(#3061) sztanozs :
ez qrva jó!A kérdést igazából el sem olvastam, csak odáig, hogy System.out.println, aztán tovább sem mentem, de most megnéztem, hát ez óriási
Az a baj, hogy abból kiindulva, hogy ráadásul a JavaScript topicba írt Java-kérdést, nem is igazán érdekli a dolog, csak muszájból tanulja, vagy nem vágom. -
Sk8erPeter
nagyúr
Bocsi, de ez a kód elég nagy hülyeség.
Amúgy ennél kényelmetlenebbül és csúnyábban tesztelhető módszert nehéz lett volna kitalálni, mint ahogy felraktad jsFiddle-re.Figyeld, most ez 3 percembe került, miután letöltöttem IconFinderről két ikont:
Szerintem valami olyasmi is benne lehet a dologban nálad, hogy nincs meghatározva az egzakt szélesség/magasság, és az egér fölévitele során a tököm tudja miért duplázódik. Na most ezt jól megaszondtam, mi?
-
Sk8erPeter
nagyúr
Ment privi.
Miért kéne itt az .on()? Mármint nem tudunk semmit a feladatról, de amit itt írt, abban nem látom be, miért lenne rá szükség (nem volt szó pl. AJAX-ról).
Szerk.: ja, mondjuk lehet, hogy arra gondolsz, hogy írta, hogy elég nagymértékben kell a kliensoldali kódra támaszkodni, és valszeg kelleni fog. Csak ezt nem tetted hozzá. -
Sk8erPeter
nagyúr
Na igen, de azért is írtam, amit írtam, mert itt konkrétan tudnod kell, hogy 10 elem lesz, vagy pedig még azt lehet csinálni, hogy tudod, melyik a szülőelem, és megszámoltatod jQuery-vel, mennyi közvetlen gyerekeleme van, aztán annyiszor végigiterálsz egy ciklussal, és megcsinálod azt, amit mutattál. De szerintem sokkal értelmesebb lenne úgy megírniuk az alkalmazást, hogy az használható legyen, ne kelljen hozzá össze-vissza tákolgatni. Vicces, hogy állítólag sok 0 van a projekt összegének a végén (ez már itt kicsit túl sokszor is lett kihangsúlyozva Muton által), és ahhoz képest hozzá nem értők okádják ki a gány kódokat (mondjuk kezd olyan érzésem lenni, hogy itt mi írjuk meg a kliensoldali kód felét...).
-
Sk8erPeter
nagyúr
fú öcccsém, nem szeretnék a kódjaitokkal dolgozni...
Tákolás tákolás hátán.
Miért nem mondod meg azoknak a rendkívül okos fejlesztőknek, akik körbevesznek, hogy adjanak már valami normális, KÖZÖS class-t az érintett elemeknek (magyarul nyúljanak bele egy picit a HTML-be, és toljanak bele plusz egy osztályt), és ne játsszák már a hozzáértőt? Miért kell ilyen gányul megoldani? Gondolom ha azt javasolnád, hogy ugyan rakjunk már rá még egy class-t, csak hogy általánosabb megoldásokat is lehessen ezekre az elemekre alkalmazni, akkor is azt mondanák, hogy megint túlbonyolítod a dolgokat...
Megoldható az, hogy egy ciklussal végigmész a doksin, és megkeresed az összes "item" class-szal kezdődő nevű elemet, meg hogy van-e mögöttük szám, és rákötsz egy handlert, de az elképesztő erőforrás-igényes és oltári gány lenne.Vagy most ahogy Karma kérdezi, ez megint csak egy ilyen rendkívül fantáziadús példa volt a részedről?
Nyomass már fel egy példát jsFiddle-re megint, mert így csak szemeteljük a topicot a sok-sok visszakérdezéssel. -
Sk8erPeter
nagyúr
Most komolyan ezt javasolták?
Akkor jó nagy f@szokkal lehetsz körülvéve (akkorák, hogy már b@szni lehet velük), ha ezt a módszert jobbnak tekintik, és szerintük ez így nem jó...
Megjegyzem azt is, hogy ez pont nem a túlbonyolítása a dolgoknak, amit mutattam, hanem egyszerű, rugalmas és átlátható módja az elemek hozzáadásának (így tök egyszerűen adhatsz hozzá újabb attribútumokat, meg sokkal olvashatóbb a kód, mint az egybeb@szott stringekkel). Én biztos jól elküldeném őket a p×csába, ha nekem mondanák azt, hogy ez túlbonyolítás.
Bocs, csak felcseszik az agyamat az ilyen önjelölt degenerált programozózsenik. -
Sk8erPeter
nagyúr
"ha az egyiket pár pixellel odébb akarta rakni a fejlesztő (grafikus), akkor berakott elé egy pár pixeles üres divet"
Az igen.paddingről meg marginról nem hallott? Bár ha látnánk, miről van szó, könnyebb lenne okoskodni, de most ennyiből úgy érzem, elég fura megoldásokat alkalmaz a csávó.
A többire: pont azt mondtam, hogy <ul> meg <li> helyett azt írsz oda, amit akarsz, ez a rendes, listás változat csak egy példa volt. Az meg a másik, hogy ennek a listának a stílusa is felülbírálható... meg ugye egy rendes listához azért szerintem illik <ul> vagy valami táblázatos megoldást használni, feladattól függően, szemantikailag úgy logikus, nem a sima dives megoldás, ami a struktúrájáról nulla információt ad.
Itt eléggé látszik, hogy milyen rugalmasan alakítható a dolog:
http://jsfiddle.net/Sk8erPeter/8CDGv/8/
Most div a listaelem szülője, az elemei szintén divek, aztán belepakolok spaneket... mondom, úgy kombinálod, ahogy akarod...
De tulajdonképpen nem nagyon értem az aggályaidat, mert hogy mit írj át mire, az elég alapvető dolog, szóval ezekkel nem tudom, miért akadsz el. -
Sk8erPeter
nagyúr
Nem véletlenül mondtam, hogy térj vissza a HTML- és CSS-alapokhoz.
Te most nem csak egy listát szeretnél kiíratni?
Azért többszöröződnek az elemek, mert minden alkalommal minden .c osztállyal rendelkező elemhez hozzáadod újból a listaelemeket.
Most kb. 2 perc volt átírnom úgy, hogy normális elnevezést kapjanak a HTML-elemek ÉS a változónevek is, próbáld ezt meg majd a jövőben Te is valahogy így csinálni:http://jsfiddle.net/Sk8erPeter/8CDGv/7/
"Nekem az kellene, h alma, körte, dinnye jelenjen meg csak."
Milyen szabály szerint? Kell valami általános rá, hogy például csak a tömbök feléig szeretnél kiíratni, vagy csak konkrétan az legyen, hogy a 2. indexig fusson (0-tól)?
Mert akkor egyszerűen elég a for ciklusnál annyi is, hogy i < 3 && i < fruitsArray.length;
Azért van az &&, hogy "biztonságos" legyen, hogy ha kisebb a tömb 3-nál, akkor se legyen túlindexelés. -
Sk8erPeter
nagyúr
Minek jelszó?
Teljesen anonim módon is fel lehet dobálni kódokat, tök felesleges bejelentkezni ilyen miatt.
Egyébként beleraktam az előző hsz.-be még pár plusz infót."pont nem szopatás, mert könnyű leírni."
Remélem, ez csak vicc volt.
Könnyű leírni, aztán olvasni+értelmezni lehetetlen. Neked is, másnak meg főleg. -
Sk8erPeter
nagyúr
Miért szopatod magadat meg minket ilyen fantáziadús nevekkel, mint "1", "2", "3", meg "a", "b", "c"?
Ha valaki megnézi a kódjaidat, nem szokott könnyekben kitörni?
Inkább legyen 100 karakteres a változóneved, mint hogy ilyen tök érthetetlen neveket használj.
Meg rakj már fel légy szíves jsbinre vagy jsFiddle-re egy példát, mert ne nekem/nekünk kelljen már ezzel időt tölteni plíz.i<array
ez így nem fog menni, legfeljebb i<array.lengtharray(i)
ez így szintaktikailag hibás, legfeljebb array[i]
de NE használj ilyen neveket, mint array meg hasonlók, mert egyrészt ez is totál nem mond semmit, hogy konkrétan melyik tömbről van szó, meg elnevezésben nagyon hasonló a nyelvi lefoglalt "Array" kulcsszóra. Ergo teljesen félrevezető. -
Sk8erPeter
nagyúr
Miért ne lehetne már divet hozzáadni?
$(document).ready(function(){
$('<div />', {
'class': 'akármi-osztály',
'id': 'valami-azonosító',
'text': 'asdasd',
'style':'color:red'
}).appendTo('#foo');
});http://jsbin.com/esapog/2/edit
Egészségedre.
(mármint a sört)
-
Sk8erPeter
nagyúr
válasz
Speeedfire #2997 üzenetére
Hát rengeteg ideig tartott, legalább fél percig.
Főleg most, hogy már nekem is van SSD-m.(így még az IE8 és Firefox betöltési ideje is szélsebes, pedig utóbbinál már különösen meglepő)
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #2995 üzenetére
Kipróbáltam, még az IE8 is "szereti" (meg FF).
-
Sk8erPeter
nagyúr
válasz
Speeedfire #2994 üzenetére
"a hover az a bind-nek egy rövidebb verziója."
Mármint úgy érted, a bind('hover', ...)-nek.Szerk.:
vagy bind('hover', handler)... hogy mennyire cross-browser, azt nem tudom, de működik, legalábbis Chrome + jQuery 1.8.2-vel biztos, de sztem más böngészőben is -
Sk8erPeter
nagyúr
válasz
Benceee14 #2984 üzenetére
Felraktam neked inkább ide, aztán innen lehet tovább boncolgatni, ha valakinek van rá ideje (nekem most nincs ennyi):
http://jsfiddle.net/frAv7/Nem néztem át a kódodat, de gyorsan ránézve nem ártana elemeket is létrehoznod ezekhez:
var winEl = document.getElementById("win"),
loseEl = document.getElementById("lose"),
drawEl = document.getElementById("draw");Már ha érted, itt mi is történik (vagy minek kellene történni) valójában.
Ha már Google-tolvajlás, nem ártott volna belinkelned az eredetit is.
Legalább hogy ne nekünk kelljen megírni helyetted az egészet, és egyből meg tudjuk mondani, nálad mi van elcseszve ahhoz képest, vagy mi hiányzik.
===============
(#2981) szucs.miki : szívesen!
Új hozzászólás Aktív témák
Hirdetés
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- The Division 2 (PC, XO, PS4)
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Spórolós topik
- Azonnali fotós kérdések órája
- Milyen TV-t vegyek?
- Apple asztali gépek
- Netflix
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Honor Magic5 Pro - kamerák bűvöletében
- További aktív témák...
- DDR5 GAMER PC: Új RYZEN 7 8700F/9700X +RTX 4060/5060/4070/5070 +16-32GB DDR5! GAR/SZÁMLA/50 FÉLE HÁZ
- Dell Latitude 7410 Strapabíró Ütésálló Profi Ultrabook 14" -80% i7-10610U 16/512 FHD
- Szép! HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -65% i7-1185G7 32/512 Iris Xe FHD Magyar
- HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -65% i7-1185G7 8/512 Iris Xe FHD Magyar
- 512 Gb-os NVME-k
- Apple iPhone 13 Mini 128GB, Kártyafüggetlen, 1 Év Garanciával
- LG 55C3 - 55" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
- billentyűzetek - kiárusítás - Logitech, Corsair, ASUS
- BESZÁMÍTÁS! 1TB Western Digital SN850X NVMe SSD meghajtó garanciával hibátlan működéssel
- Csere-Beszámítás! Intel Core I9 14900KS 24Mag-32Szál processzor!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest