- Mobil flották
- Fotók, videók mobillal
- Apple iPhone 15 Pro Max - Attack on Titan
- OnePlus 7 - magabiztos folytatás
- Szimpatikusnak tűnik a T Phone új generációja
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- iPhone topik
- Motorola Edge 30 Neo - wake up, Jr...
- Samsung Galaxy A54 - türelemjáték
- Samsung Galaxy Watch5 Pro - kerek, de nem tekerek
Hirdetés
-
Indul a PlayStation Days of Play, bemutatkoztak a következő PS Plus játékok
gp Alig egy napot kell várni és elrajtol a Sony szokásos leárazása.
-
Kiderült, hogy hol veszik a legtöbb kínai EV-t
it A kínai EV-k és hibridek eddigi legnagyobb exportpiaca Belgium volt, azonban az EU-s álláspont és a kínai stratégiaváltás miatt immáron Brazíliába kerül a legtöbb ilyen jármű.
-
5G-s változatban is lesz Redmi Pad Pro
ma És akkor minden bizonnyal Poco Pad is.
-
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 megalover #3429 üzenetére
Igazából melyik részét nem érted annak, amit írt?
Nem nagyon hoztál fel ellenérvet, hogy miért is jó az, amit csinálsz.
Szerk.: pontosabban amit csinálni akarnál, amit a YouTube szándékosan bonyolított el, ilyen visszaélések (mesterséges látogatottságnövelés) elkerülése érdekében.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz megalover #3420 üzenetére
"Mondhatnám erre lett kitalálva.. De ezzel messzire jutnánk!"
Azért EREDETILEG az ARPANET nem "erre lett kitalálva", de aztán persze lett belőle lakossági felhasználás, majd kőkemény kommercializálódás, "ahogy illik".============
(#3432) megalover :
azért, mert az ilyen "téves klikkeléssel, hopsz, véletlen felnyílt egy oldal"-típusú nyereségszerzés gusztustalan, ehhez nincs mit hozzátenni.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
összefoglaló, ami bemutatja a cookie mentését, olvasását, törlését:
http://www.quirksmode.org/js/cookies.htmlSk8erPeter
-
Sk8erPeter
nagyúr
válasz phanfantom #3442 üzenetére
Szerintem nem érdemes feltalálni a spanyolviaszt, mert valakik már írtak hierarchikus menüt:
http://jqueryui.com/menu/
http://users.tpg.com.au/j_birch/plugins/superfish/Sk8erPeter
-
Sk8erPeter
nagyúr
Ha nyitottál volna egy konzolt, elég gyorsan kiderült volna, mi a hiba.
Tehát első körben nyomj egy F12-t (vagy Ctrl+Shift+I), aztán kattints a Console panelre (ha FF-ot használsz, akkor ugye telepítve van a Firebug?). Aztán kezdd el kattintgatni a linkjeidet.
Gyorsan rájöhetsz, hogy valszeg elég hiányosan másoltad ki valahonnan az amúgy is szar kódot, mert se saveIt(), se readIt(), se eraseIt() függvényed nincs definiálva...Linkeltem neked egy oldalt, ahonnan szedhettél volna példakódot, arra nem reagáltál.
Sk8erPeter
-
Sk8erPeter
nagyúr
Ja hogy Te a forráskódból szedted, sorry, azt nem néztem , csak azt néztem, ami magában a szövegben van, példaként bemutatva:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}Na, de ha azt akarod használni, ami ott szerepel, akkor nézd tovább a forráskódot, láthatod, hogy ez a JavaScript-fájl is include-olva van:
http://www.quirksmode.org/quirksmode.jsitt pedig szerepel a Cookie objektum:
/* COOKIES */
var Cookies = {
init: function () {
var allCookies = document.cookie.split('; ');
for (var i=0;i<allCookies.length;i++) {
var cookiePair = allCookies[i].split('=');
this[cookiePair[0]] = cookiePair[1];
}
},
create: function (name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
this[name] = value;
},
erase: function (name) {
this.create(name,'',-1);
this[name] = undefined;
}
};
Cookies.init();ha ezt is beteszed a kódba, már működni fog.
Felraktam neked a kódot, ami amúgy nem valami szép:
===
Az tényleg durva, hogy tanítanak nektek JavaScriptet, de nem mutatják meg a fejlesztőpanelek használatát...[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Egyszerűen nem értem a tanítási koncepciót (hogy mit? Sokszor ilyen tanároknál nem biztos, hogy van olyan...). Számológép készítését erőltetik rátok, visszaszámlálós órát készíttetnek, "bejelentkezős" formot csináltatnak JavaScripttel (!!), aztán pedig WEBSHOPOT akar veletek készíttetni a tanár, CSAK JavaScript-alapokon - de mindeközben nem tanítja meg, hogyan lehet validálni normálisan egy űrlapot, hogyan lehet átszínezni oldalon lévő elemeket, stílust változtatni, meg egy csomó gyakorlatias feladatot fel lehetne sorolni, ami biztos, hogy előkerül egy honlapkészítés során. De egy visszaszámlálós óra, számológép? Ki a francot érdekel? Előkerülhet egy bizonyos projekt során ilyesmi, de a leggyakrabban előforduló feladatokat kellene először begyakoroltatni, megmutatni ilyeneket, mint a fejlesztőpanel használata, stb., nem pedig a diákokon kiélni a gyökér kreativitását. Tényleg elkeserítő a helyzet a webfejlesztés "tanítása" során...
Sk8erPeter
-
Sk8erPeter
nagyúr
Ez egyáltalán nem furcsa. Az AJAX-kommunikáció, mint a mozaikszóban benne is van, alapvetően aszinkron hívásokat eredményez, ergo az átirányítás valószínűleg még azelőtt meg fog történni, mielőtt az AJAX-kérés lefutna - nem várja meg, míg végez az akarmi().
Megoldás a logika újragondolása: biztos van értelme AJAX-kérés után ÁTIRÁNYÍTANI? Nem lenne jobb mondjuk az átirányított oldalnak átadni a megfelelő adatokat query string formájában? Ha arra jutsz, hogy maradjon az eredeti koncepció, akkor pedig az AJAX callback függvényébe kellene beletenned az átirányítást, hogy előbb az ott szereplő kérés mindenképp lefusson.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz sebastien19 #3452 üzenetére
Na, itt vannak jó példák arra, hogyan tudsz kódból MouseEventet előidézni:
http://stackoverflow.com/questions/11127908/difference-between-click-and-actually-clicking-a-button-javascript-jquery/11128099#11128099
https://developer.mozilla.org/en-US/docs/DOM/document.createEvent
dispatchEvent method
http://help.dottoro.com/ljrinokx.phpvan még a CustomEvent, IE9 fölötti verzióknál megy:
https://developer.mozilla.org/en-US/docs/DOM/Event/CustomEventegy élő példa a developer.mozilla.org oldalon:
https://developer.mozilla.org/samples/domref/dispatchEvent.htmlSk8erPeter
-
Sk8erPeter
nagyúr
dzone-on volt fent ez a rendkívül hasznos script, hátha valakinek szüksége lesz hasonlóra egy projekt során:
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz sebastien19 #3467 üzenetére
Szerintem JavaScriptben a korábbiak alapján nem lehet egyértelműen megmondani, hogy automatizált klikkelés történt-e (épp JavaScripttel), vagy pedig ténylegesen egér általi. Én legalábbis nem látom azt a teljesen foolproof megoldást, amikor olyan event objektum jönne létre, amit ne lehetne kézzel felparaméterezni (lásd korábban linkelt kódok).
Ha valaki mégis tud egyértelmű módszert, megmondhatná.
"Pl. ha a tálcára kattint, akkor onnantól a lenyomott billentyűk sem érzékelhetők, ugye?"
Nem.Sk8erPeter
-
Sk8erPeter
nagyúr
Jaja, ez így van, de arra figyelj oda, hogy az async paraméter jQuery 1.8-astól kezdve deprecated:
http://api.jquery.com/jQuery.ajax/"As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success()."
Érdemes átgondolnod, hogy biztosan jó-e az, hogy egy sima bejelentkezés miatt szinkronná teszed a kommunikációt, ha egyébként általában az oldaladon az aszinkron kommunikációt erősen használod: szerintem ebben az esetben sem indokolt. Hadd döntse el a felhasználó, szeretné-e megvárni, míg megkapja a választ a szervertől, addig meg tegyél ki neki egy töltődő ikont. Zavaró lehet, ha addig használhatatlan a felület. Vagy legyen hagyományos lap-újrafrissülős megoldás. Vagy használd a jQuery BlockUI Plugint (vagy egy hasonló megoldást).
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Igazából csak egyetlen return false; kell a keydown eseménykezelő végére
Ha jól értelmezem, a felvetés az, hogy amikor a canvasra rákattintasz, és elkezded nyomni a kurzort valamelyik irányba, akkor elkezd rajzolódni egy vonal, de irányváltásnál van egy kis megakadás, amíg folytonosan kezd el haladni, hasonlóan ahhoz, mint amikor mondjuk egy szövegmezőben lenyomva tartod valamelyik betűt, és egy kis várakozás után kezd el csak rengeteg betű beíródni. Azt szeretné, hogy ne legyen várakozás, egyből tudjon kirajzolni a másik irányba is (lehetséges ez egyáltalán?).Ide már betettem a return false-t, meg a többi kevés kódot:
http://jsfiddle.net/KQW5w/1/Sk8erPeter
-
Sk8erPeter
nagyúr
válasz ahetaton #3477 üzenetére
Ha használsz jQuery UI-t, akkor van hivatalos jQuery UI-féle megoldás is:
http://jqueryui.com/tabs/#ajax
Persze biztos lehet találni igényeseket plain JS-ben is, én ilyet most hirtelen csuklóból nem ismerek. Hátha ajánl valaki plain JS-megoldást is, hogy ne legyen az, hogy csak a jQuery-t sz×pja mindenki.Sk8erPeter
-
Sk8erPeter
nagyúr
https://developer.mozilla.org/en-US/docs/HTML/Canvas/Tutorial/Basic_usage
Itt van a kulcsmondat a width és height attribútumok leírásánál a canvasra vonatkozóan, zárójeles megjegyzésként:
"The <canvas> element has only two attributes - width and height. These are both optional and can also be set using DOM properties. When no width and height attributes are specified, the canvas will initially be 300 pixels wide and 150 pixels high. The element can be sized arbitrarily by CSS, but during rendering the image is scaled to fit its layout size. (If your renderings seem distorted, try specifying your width and height attributes explicitly in the <canvas> attributes, and not with CSS.)"Hogy egész pontosan a CSS-beli megadás miért nem működik az elvártaknak megfelelően, azt nem tudom, de feltételezem, ez böngészőbeli implementáció kérdése, és jelenleg egyik böngészőben sem renderelődik a konkrét példa az elvártaknak megfelelően.
Érdekességként felfedeztem egyébként, hogy Operában hiába tartod nyomva a kurzorgombokat, nem fog arrébbmenni a vonal, csak akkor, ha egyesével nyomkodod őket. Ezzel a buggal (vagy feature? ) még nem találkoztam Operában. Bár gondolom most ez marginális kérdés, ha már marginális részesedésű böngészőről van szó.
Sk8erPeter
-
Sk8erPeter
nagyúr
Nagyon nem szép megoldás akkor sem a szinkron (és NEM aszinkron ) hívás.
Amit írtál, az is átalakítható, ha megadsz egy callback-függvényre mutató pointert, úgy, hogy paraméterként azt is elvárod:Server.prototype.login = function(username, password, successCallback){
// .............
$.ajax({
// ............
success: successCallback,
// ........
});
// ......
}
function successSzarsag() {
// ide jöhet az, amit sikeres kommunikáció esetén szeretnél csinálni
}
$("#loginBtn").click(function(){
// ..........
server.login(uName, pwd, successSzarsag);
// ......
});Most ez csak gyorsan bepötyögött példa volt a kódod alapján, nyomokban hibát tartalmazhat, bár szerintem első ránézésre így működőképes.
Tényleg picit nehézkes átállni erre a gondolkodásra, erősen más megközelítést igényel, de érdemes végiggondolni, mert blokkolni a UI-t nagyon rossz megoldás.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Azért az legyen kiírva, hol hibáztunk, ez így nem túl informatív... (meg </br> >> <br />
Egy formban legyen submit típusú gomb, hogy Enterrel is el lehessen küldeni (különben így nem lehet). De submit gomból több is lehet egy formban, épp ezért a form onsubmitjára érdemes kötni a validálást, nem egy adott gomb onclickjére. (Ha csak billentyűzettel babrál, akkor nem biztos, hogy rá fog klikkelni a gombra.)Amúgy meg a randa alert helyett jobb, amit írt, hogy egy error divbe írja ki a hibát.
Sk8erPeter
-
Sk8erPeter
nagyúr
Jaja, ez jó workaround, igazából annyi a trükk, hogy setIntervallal 25 milliszekundumonként rajzoltatja újra a képet, és 5 egységgel mozgatja a négyzetet ide-oda a kurzorgombok lenyomására.
De figyelj azokra a dolgokra, amiket martonx említett.(#3500) martonx :
jaja, ez tényleg gáz, sajnos sokszor a fejlesztők nem figyelnek oda a felesleges overheadre, ami így kicsiben lehet, hogy nem érzékelhető, de eleve igénytelenül programozni elég gáz.
Meg a cikk mondanivalója nem kicsit félrevezető ezzel az "Until I realized I could just use jQuery." mondattal, amikor ezek a dolgok jQuery nélkül is különösebb macera nélkül megoldhatóak, legalábbis nem itt jön ki a jQuery előnye, az is biztos. Igazából mi az, ami itt rövidíti a kódot? Legfeljebb az eseménykezelés rövidebb egy picit, meg nem írt document.getElementById('canvas')-t, ami valóban hosszabb, mint a $('#canvas'), de nagyjából itt meg is áll a dolog... a többi ergo pontosan ugyanannyiból összehozható plain JS segítségével.De hogy ne csak a szám járjon, itt van az egész plain JS-ben, különösebb erőlködés és jQuery nélkül:
http://jsfiddle.net/Sk8erPeter/b5sxk/
Kipróbáltam, működik Chrome-ban, Firefoxban, Operában.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz martonx #3502 üzenetére
Nesze:
http://jsfiddle.net/Sk8erPeter/b5sxk/1/Mondjuk ez a spórolás csak fejlesztés közben érdekes, nem betöltéskor.
Félreértések elkerülése érdekében nem fél órát tököltem vele, csak közben kétmillió topicot megnéztem, meg hatmillió e-mailt, aztán eszembe jutott, hogy miért is ne.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz martonx #3505 üzenetére
"Plusz a namespace-be szervezés, amúgy is hasznos dolog, összetettebb javascript-es oldalnál."
Persze, ez alap. Ez akkor is jól jön, ha valaki valamilyen oknál fogva több library-t is szeretne használni, ami ugyanazt a változónevet használja - lásd például jQuery és MooTools egy oldalon (bár ha ilyenre sor kerül, akkor a fejlesztőkkel van a gond, de kényszerhelyzetben előkerülhet), de lehetne más példát is mondani.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Igen, és deprecated, ahogy volt már róla szó a topicban. Lásd jQuery hivatalos oldala.
Nem jó, nagyon nem az. Ne fagyasszuk be a júzer GUI-ját azért, mert nem jöttünk rá a jó megoldásra.(#3522) martonx :
én is így látom. Egy "kicsit" értelmesebb, mint a múltkori "valósítsunk meg komplett webshopot CSAK JavaScript-alapokon"-feladat... így legalább a diákok talán elkezdik érteni, mit jelent az, hogy aszinkron kommunikáció.(#3519) Lacces :
nem volt egy túl nagy vitatéma, a lényeg, hogy senki ne AJAX-ozzon úgy, hogy szinkron kommunikációt erőltet. Mert az rossz.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz ferensz #3527 üzenetére
Na, sorry, csak most tudtam megnézni a kódodat rendesen.
Végre egy érdekes kérdés!a következőket érdemes használni:
- CSS class-ok a JavaScript-kódba beégetett stílusváltoztatások helyett, tehát osztályok hozzáadása, elvétele, a jQuery-s addClass, removeClass, hasClass plain JS-ben történő megvalósításával, amire itt van code snippet:
http://www.openjs.com/scripts/dom/class_manipulation.php
- ha alapból van mondjuk egy list-collapsed osztály az összecsukott listán, ami display:none-ra állítja azt, és van külön egy list-expanded osztályod, ami pedig display:block-ra állítja, és ebben a sorrendben következik a CSS-kódban is egymás után, akkor elég csak hozzáadnod, illetve elvenned a list-expanded osztályt, de mondjuk ez nem teljesen foolproof megoldás (más is módosíthatja az osztályok sorrendjét, láthatóságát), ezért érdemes mindig elvenni a list-expanded osztályt, ha össze akarod csukni, és hozzáadni a list-collapsed osztályt (ez így nem olyan szép a kódban, mert egymás után van, meg plusz függvényhívások, de azért nem katasztrófa)
- event.preventDefault, hogy a # hreffel egyenlő linkeket ne akarja követni a böngésző (ne ugorjon a lap tetejére)
- event.stopPropagation, hogy megakadályozd az esemény felszivárgását (bubbling up) a DOM-fában (pl. a valós linkre kattintva nem kell lenyílnia a listának)Ez alapján módosítottam a kódodat:
http://jsfiddle.net/Sk8erPeter/a63q7/Remélem, így már sikerül, kommenteztem a kódot, ha valami mégsem teljesen világos benne, kérdezz vissza nyugodtan.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz ahetaton #3534 üzenetére
A getStyle() nem túl jó név, mivel itt konkrétan a visibility tulajdonságot kéred le, tehát szerencsésebb lenne akkor már a getVisibility() elnevezés...
JavaScript-kódba beégetett CSS-módosításokat nem érdemes használni, inkább hozzáadni és elvenni osztályokat, amik kinézetét CSS-ben határozod meg.
Pl. legyen egy .hidden osztályod, ami a display:none tulajdonságot állítja be. Ezt hozzáadod vagy elveszed.Így:
http://jsfiddle.net/pXRfT/Látom, megelőztek.
Felejtsétek el az inline, HTML-kódokkal összekutyult ocsmány JavaScript-kódokat!![ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Milyen "hivatalos irományt"? Konkrétan kitől várnád ezt az irományt?
Kismillió ezzel kapcsolatos cikk, slide, egyéb van, ami összefoglalja, hogy a szemantikai keveredések miért rosszak MINDIG. Egyszerűen karbantarthatatlanná, tesztelhetetlenné és átláthatatlanná teszi egy idő után a kódot, nem beszélve arról, hogy mennyire ocsmány.
Egyébként a template-ezést sem véletlenül találták ki.De mutatok neked konkrétumot, ezt a slide-ot még régebben olvastam, könyvjelzőztem is, mert nagyon szemléletes, mindenképp fusd át, röviden, tömören, érthetően mutatja be leegyszerűsített példákkal, mit kerülj el
http://www.slideshare.net/fgalassi/refactoring-to-unobtrusive-javascriptSk8erPeter
-
Sk8erPeter
nagyúr
válasz martonx #3540 üzenetére
Nem is beszélve arról, hogy mennyire okádék, amikor valaki egy sorba bedob tisztességesen kinéző kódnál 5 sort igénylő kódot. Mondjuk az se semmi, amikor valaki külön JS-fájlban elkezd trükközni, hogy megspóroljon 3 sornyi kódot, és csinál belőle a nyelv lehetőségeit kihasználva 1 minikódsort, amivel igazából csak azt éri el, hogy bebizonyította magának, milyen ügyes volt, de aztán amikor 2 hét múlva ránéz a kódjára, akkor ő maga is elgondolkozik, hogy ott mit is csinált. (Bár ez nyelveken átívelő dolog.)
(#3541) fordfairlane :
"Az ilyen "separation of concerns" megközelítések akkor számítanak, ha a szoftver bonyolultsága meghalad egy szintet."
Igazából a lehető legegyszerűbb kódnál is számít, nem kell ehhez bonyolult webalkalmazást elképzelni, elég az iménti kérdező kódjára gondolni, már ott is ronda.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Eléggé úgy tűnik, a jsFiddle-nél kúrtak el valamit, konkrétan az embeddable.js-ben a switchTab metódus meghívásakor történik a hiba, szóval pont, amikor váltasz:
Unhandled Error: Cannot convert 'this.sections[index]' to object
Első megoldás hibajelzés a jsFiddle GitHub-oldalán.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz ahetaton #3546 üzenetére
Javaslom, hogy kezdd el túrni az internetet "JavaScript validation" kulcsszavakra keresve, hidd el, előbb-utóbb rá fogsz jönni, hogy kell megoldani a feladatot. Itt senki nem szeret ingyen dolgozni, tanácsokat szívesen adunk, segítünk is a konkrét kódban, de legalább a minimális erőfeszítést lehetne látni a kódodban... amúgy remélem tudod, hogy a szerveroldali validálás az elsődleges (akár PHP-ben dolgozol, akár ASP.NET-ben, akár Javában, tök mindegy), a kliensoldali csak ezután következik (az mindig másodlagos).
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz nymarti #3550 üzenetére
"van valami tippetek, hogy mit ronthattam el?"
Hát elég sok mindent.
- nem raktad fel a kódodat jsFiddle-re, hogy könnyebben és gyorsabban tudjuk debuggolni
- kezdjük ott, hogy a select15() és a magas() nem túl beszédes nevek, egy év múlva esélyes, hogy fogalmad sem lesz róla a kód megnézése nélkül, hogy az a két függvény mit csinál. Kerülendő. Inkább legyenek jó hosszú változó- és függvény-/metódusneveid, mint hogy később nehézkes legyen rájönni, mi a feladatuk (ahogy az a,b,c,s, x,y,z és hasonló nevek is kerülendők).
- onChange="magas();" --> ezzel tehát azt mondtad, hogy a select listából való válogatás során, ha történik bármi változás, akkor a magas() függvény hívódjon meg; a select15() egyáltalán nem hívódik meg, szóval azt hiába is várod.
- nem tudjuk, mi van a magas() függvényedben, de a disabled-re állítás amúgy sem történik meg, mivel a select15() nem hívódik meg
- mi a frász az az s[16]? Egyáltalán hol van itt az az s tömb? Mondjuk feltételezem, azt gondoltad, hogy így eléred a következő select elemet, aminek sel16 az id-je, de így nem fog menni. Vannak ilyenek, mint a document.getElementById, nextElementSibling, children, és így tovább.
- na, egyelőre elég infó.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz #36268800 #3557 üzenetére
Ha 2002-es, akkor bőven tartalmazhat elavult dolgokat, úgyhogy inkább valami frissebb könyvre/e-bookra/egyébre hagyatkoznék. Ebből a 24 órás valamiből is tuti van frissebb, biztos nem árt, ha átnézed, egyébként műszaki jellegű könyvtárban is kapható (ha valamelyik főiskolába/egyetemre jársz, akkor érdemes ott körülnézni), elég drágák ezek a könyvek, úgyhogy ha nem akarsz kiadni annyit, akkor inkább könyvtárból vedd ki. Aztán persze nagyon jó online tutorialok is vannak. Az MDN oldalát tényleg érdemes nézegetni.
Sk8erPeter
-
Sk8erPeter
nagyúr
Ez sztem inkább szerveroldali feladat, belegenerálsz az aktív menüpontba pl. egy "active" class-t, és azt mindig nyitva tartod. Vagy most nézem, a kódodban ez a "current". Az is jó.
De mondjuk ennek nem sok köze van a JavaScripthez, mivel itt a kódodban is szimplán csak HTML+CSS-kombóval oldottad meg.Pl. most egy sort JavaScript-kódot nem raktam hozzá, csupán az Akciók <li>-be beleraktam egy class="current"-et a kódod mintájára, aztán a CSS-kódhoz összesen két sort tettem hozzá, és kész is voltam vele, így az Akciók menüpont mindig nyitva van:
http://jsfiddle.net/96Bu8/11/
Egész konkrétan azt tettem hozzá újonnan, amihez kommentbe odaírtam, hogy /* ÚJ */.Ilyenre gondoltál?
A feladat tehát annyi, hogy szerveroldalon mindig az aktuális <li>-be belegenerálsz (akár sima if-else-ekkel) egy current class-t, ahogy itt is mutattam. Nyilván megoldható egyébként JavaScripttel is, de alapvetően szerveroldali feladatot minek rábízni a kliensre. Persze ha nagyon muszáj megoldani JS-ben, akkor tudunk segíteni benne.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Hát ez csak akkor kell, ha a többi tartalmat AJAX-szal tölti be. Feltételezem, nem ez a helyzet, ha nem vágja a JavaScriptet, úgyhogy ez lehet, h tárgytalan.
http://www.openjs.com/scripts/dom/class_manipulation.php
itt van egy nagyon egyszerű addClass, removeClass, hasClass implementáció. Nem tanulmányoztam az esetleges bugjait, de nekem eddig bevált, ha plain JS-ben kellett ilyesmi.function hasClass(ele, cls) {
return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
function addClass(ele, cls) {
if (!this.hasClass(ele, cls)) ele.className += " " + cls;
}
function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className = ele.className.replace(reg, ' ');
}
}ez alapján nem túl szép gyorsmegoldással ugyanaz:
de mondom, mindez valszeg most úgysem érdekes, legfeljebb egymás közt
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Hege1234 #3568 üzenetére
Igazából majdnem elkezdtem magyarázószöveget írni a dokumentációk olvasásának fontosságáról, szépségéről, a Google Maps működéséről, aztán rájöttem, hogy copy-paste-tel, majd minimális módosítással a feladatod konkrétan 4 perc alatt megoldható, úgyhogy inkább nem írogattam, tessék, először is, ahonnan copy-ztam a kódot:
https://developers.google.com/maps/documentation/javascript/examples/infowindow-simple
ezt úgy találtam meg, hogy beírtam Google-be, hogy "Google Maps API InfoWindow"
Aztán utána megnyitottam a jsbint, bedobtam a CSS-kódodat, meg a belinkelt oldalról a JS-kódot, és átírtam a koordinátádnak megfelelően, meg a szöveget módosítottam, zoomot gyorsan átállítottam, aztán kész:
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Jim-Y jókat írt.
Igazából a kérdésedet sem értem, épp előtted kérdeztek egy Google Maps API-val kapcsolatos dolgot, például a megoldásban szereplő InfoWindow-s módszert a tetszőleges tartalmú buborékkal légy szíves mutasd meg nekem, hogyan csinálnád meg a helyszín kikeresésével, majd a szokásos megosztólinkkel a maps.google.com-on, én is kíváncsi lennék...Sk8erPeter
-
Sk8erPeter
nagyúr
Gondolom páran már láttátok, de most megint megnéztem, és röhögtem egy sort az általunk használt nyelven
Azért sokszor a JavaScript is a vicc kategória tud lenni.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz fordfairlane #3581 üzenetére
Annak, hogy belinkeltem, a lényege nem az volt, hogy mennyire "vicceske", vagy sem, meg hogy a forma milyen figurákat mutogat, hogy feldobja az előadását, hanem az, hogy milyen degenerált típuskonverziók történnek JavaScriptben, és ezen senki ne lepődjön meg, ha ilyennel találkozik kódolás során. A mondanivalója pedig pontosan ez volt (ergo volt mondanivalója).
Amúgy nem kell ám magadra venni, mintha személyes sértést mondtak volna neked, hogy a JavaScriptben elég meglepő az, hogy []+[] = empty string, vagy hogy {}+{} = NaN; vagy ez így tök oké?"Tudom, hogy az ún. komoly programozokóknak ez vörös posztó, de hát ez legyen az ő bajuk."
Ezzel nem tudom, kire céloztál, meg hogy miért sértődtél meg ennyire ezen a videón de nem tudom, miért lenne probléma az, hogy mindezt a típuskonverziós problémát valaki bemutatja. Ha van ilyen probléma, és adott esetben meglepetéseket okozhat, akkor inkább söpörjük szőnyeg alá, és ne beszéljünk róla?Sk8erPeter
-
Sk8erPeter
nagyúr
válasz martonx #3579 üzenetére
Ez teljesen így van. Igazából nem is annyira a JavaScript általános fikázása volt a célom, hanem inkább hogy más is tudjon ezekről a buta típuskonverziókról.
Egy JavaScript-újítás sok szempontból hasznos lenne, ahogy mi már beszéltünk is róla, hogy kevésbé legyen szükség kiegészítő librarykre a kódolás idegesítően ismétlődő feladatainak megoldására plain JavaScriptben, és több dolog legyen natívan megoldható. Az esély viszont arra, hogy pár éven belül erre át lehetne állni, jelenleg nem sok (lásd ahogy az IE korábbi verzióinak kiirtása is nagyon sok évig elhúzódó folyamat).Sk8erPeter
-
Sk8erPeter
nagyúr
válasz fordfairlane #3584 üzenetére
Most komolyan, mi szükség volt erre a stílusra? Mondtam én neked bármi rosszat? Kitűzted magadnak célul, hogy most aztán belémkötsz, vagy mi a célod? Ne aggódj, eddig csak saját magadat hergelted be igazából teljesen feleslegesen (bár inkább meglepő módon), de ez nem épp arra utal, hogy ne vetted volna magadra a korábbiakat (de ne haragudj, valahogy nincs kedvem ehhez a "nem is, hanem te!!"-jellegű elkezdett óvodastílushoz).
Mindenesetre tényleg nem értem, mi bajod van, min húztad fel magad, bár gondolom épp szar kedved volt/van, és engem találtál be.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz martonx #3592 üzenetére
"Ahogy a képernyő mentéseden is látható, te egy NodeList objektumot kaptál válaszul. Ez nem igazi tömb, nem tudsz belől kimondottan indexelve elemet lekérni."
Hogy micsoda? Már hogyne lehetne indexelve végigmenni rajta?
https://developer.mozilla.org/en-US/docs/Web/API/NodeList
itt is mutatják egy példában, hogy pontosan ugyanúgy lehet végigmenni rajta, ahogy egy akármilyen tömbön.It's possible to loop over the items in a NodeList using:
for (var i = 0; i < myNodeList.length; ++i) {
var item = myNodeList[i]; // Calling myNodeList.item(i) isn't necessary in JavaScript
}Sk8erPeter
-
Sk8erPeter
nagyúr
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
Új hozzászólás Aktív témák
- Eladó ASUS RTX 3070 TUF GAMING!
- Garanciális ! be quiet! Pure Rock 2 Processzor hűtő
- EVGA GeForce GTX 1080 Ti FTW3 GAMING 11GB GDDR5X 352bit (11G-P4-6696-KR) Videokártya
- Üzletből,garanciával, HP Spectre 14" X360, i7-1165G7/16GB RAM/512GB SSD/4K OLED TOUCH/Toll
- G.SKILL FlareX 64GB (4x16GB) DDR4 Quad-channel kiszerelés
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen