- Luck Dragon: Asszociációs játék. :)
- Mr Dini: Mindent a StreamSharkról!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Parci: Milyen mosógépet vegyek?
- btz: Internet fejlesztés országosan!
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Tomasz72: Ventilátor upgrade
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- bambano: Bambanő háza tája
-
LOGOUT
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
-
Zedz
addikt
Sziasztok!
Ötleteket kérnék arra, hogy hogyan tudnék megváltoztatni egy input text placeholdert annak függvényében, hogy melyik radio button van kijelölve.
Konkrétan: van 3 radio button (magán ember, cég, intézmény) és 1 input text aminek a placeholdere jelenleg Név. De szeretném ha pl a céget jelölik be a radio buttonnal, akkor a sima Név legyen mondjuk Cég név. Több féle képpen próbálkoztam + néztem más kódjait de nem működnek erre a példára. :S
-
martonx
veterán
Nem megoldható, mindenképpen kell szerver oldali kód legalább a file mentéséhez. Ezt egy szál pár soros PHP file-lal meg tudod oldani. Kiolvasod a kapott request-et, majd ezt fogod és lemented txt-be.
Ahhoz, hogy azt a txt-t a js-ed ajax-al lehívja és kiolvassa, ahhoz tényleg nem kell szerver oldali kód. -
Sziasztok,
A múltkor kérdeztem hasonlót, ezúttal pontosítanék:
Meg lehet valósítani Javascript+AJAX-al egy olyan működést, hogy egy weboldal a szöveg (+ esetleg szöveg közbeni kép) tartalmát pl egy txt file-ból, (nem muszáj .txt-nek lennie, de talán ez a legkézenfekvőbb) vagy egy WYSIWYG editorral szerkesztett html-ből töltse be?
A lényeg az lenne, hogy egyszerű módon a weboldal gazdája tudja módosítani a weboldal információit/tartalmát.
Mivel már adott egy HTML+CSS+JQuery plugin-ekkel teletűzdelt, kialakult megjelenéssel, 'design'-al rendelkező oldal, így jó lenne ha nem kellene teljesen átszabni pl PHP-s alapokra.És ha ez megoldható, akkor az AJAX avagy HTML környékén mégis merre induljak el, melyik téma foglalkozik az ilyen file kezeléssel?
Ahogy nézegettem példákat azt találtam, hogy létezik valami FileAPI a legújabb html leírásban. (ami pl itt található: [link]) és részben ezzel oldják meg a filekezelést.
Arra sajnos nincs most idő, hogy hosszasan belemélyedjek az AJAX rejtelmeibe (bár tudom ezt kellene) ezért is próbáltam elsőre, hogy kész példakódokat nézegetek-elemzek, ám nem találtam pontosan ilyen megvalósítást még. -
Jim-Y
veterán
Működő példát nem tudok feltenni sajnos, ugyanis egy BI rendszer részét képezi az oldal, a gombot pedig egy componensként tettem fel, aminek elméletileg van "beépített" click eventje ami természetesen nem működik, ezért próbáltam magam megoldani js-el a dolgot. Gondolom maga a keretrendszer miatt nem megy úgy ahogy kéne, igazából erre gyanakodtam, mármint, hogy egy kalap kaki ez a BI rendszer, de gondoltam hátha a kódban van mégis a hiba. Jólvan köszönöm a segítséget, nem élethalál kérdése megtalálnom a megoldást, de akkor ezek szerint maga a rendszer rossz, nem a kódom
megj: ha valakit zavarna, hogy nem oldom meg a problémát itt, akkor vegye úgy, hogy azt kérdeztem, hogy a lenti kód helyes-e vagy sem
-
martonx
veterán
válasz
Sk8erPeter #3593 üzenetére
Akkor bocsánat, félre néztem valamit. Bár már magát a felvetést is furcsállottam, hogy ez ne menne, és meglátva a NodeList típust arra gyanakodtam, hogy az okozhatja.
-
fordfairlane
veterán
Nekem ez működik jól Firefoxban és Chromeban. Nem hibás a html markupod, vagy nem lehet az, hogy a script előbb fut le, mint kéne?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function valami() {
var btns = document.getElementsByTagName("button");
console.log(btns[0]);
}
window.onload = valami;
</script>
</head>
<body>
<button id="egy">gomb egy</button>
</body>
</html> -
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
} -
martonx
veterán
-
Jim-Y
veterán
sziasztok.
Egyszerű kérdés, de nem tudok rájönni
Van egy oldal, ahonnan javascripttel lekérem az oldalon lévő gombokat így:
var btns = document.getElementsByTagName('button');
console.log(btns);A konzolos kiiratás eredménye itt látható:
Szerintem ebből az látszik, hogy a btns tömb egy 1 hosszúságú button elemeket tartalmazó tömb.
Mégis.. ha utána megpróbálom elérni, vagy kiiratni a btns tömb nulladik indexű elemét akkor undefet kapok:Stehát
var btns = document.getElementsByTagName('button');
console.log(btns[0]);undefined lesz.
Ötlet?
megj: még ha nem is tömb, hanem objekt, akkor sem működik, mert a for ciklussal történő bejárás, és az elemek kiiratása sem hozott eredményt. :/
-
martonx
veterán
keress rá erre, mondjuk gugliban: ajax tutorial
Látatlanban mondom, hogy nézd meg az első 3-at, esetleg a youtube találatok közül is szemezhetsz néhánnyal.Nem kötözködésképpen, de pont PHP-ban nincs olyan, hogy 'alap' megoldás. Maximum van egy módszer, amit nektek tanítottak. De mi ezt alapból honnan tudjuk, hogy nektek mit tanítottak?
-
válasz
martonx #3588 üzenetére
Ok. köszi.
Való igaz, csak úgy tudtam (inkább tanultam) hogy ez php-nél 'alap' megoldás. (ott pl session-id szerinti adatátadás egy következő menübe lépve)
Van erre az ajax-os - voltaképp weboldal részek betöltésére valami szemléltető - olvasható példa?
Vagy úgyis nulláról kezdjen neki inkább az ember? -
Sziasztok,
Lenne egy kérdésem: Azt meg lehet oldani JS-ben, hogy egy weboldal nyitólapjának betöltődése után - aminek egyes részei (pl body, és abban header, footer) egyfajta keretként szolgálva 'megmaradnának' és a többi oldal tartalmát tölteni be az egész oldal újratöltése nélkül? (úgy ahogy ez PHP-ben 'szokás')
Van erre valami Js 'technika' amivel ez megvalósítható? -
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. -
fordfairlane
veterán
válasz
Sk8erPeter #3582 üzenetére
Tényleg ez volt a mondanivalója? "izéke" + 1 = "izéke1", de "izéke" - 1 = NaN? Hát menten berosálok, hogy micsoda krézi típuskonverzók vannak ebben a gyávaszrkitben! Nahát!
De most te végre megint jól odamondtál a szkriptkiddiknek! Helyére tetted őket! Ma is tanultak valamit az itteni fórumszakértők, méghozzá szuperkúlos - poénos módon.
És nem vettem magadra, ne kamuzz! Épp te vetted magadra. Látszik a hülye szövegeden, amit idekanyarítottál. Vagy ez csak a szokásos grafomán nemmagadravevéses ömlengésed? Jó tudni!
-
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
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ónde 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?
-
fordfairlane
veterán
válasz
Sk8erPeter #3578 üzenetére
Megnézem, vicceske, meg minden, de mondanivalója zéró. Automatikus típuskonverzió, right from the beginning, mint szinte minden más scriptnyelvnél. Tudom, hogy az ún. komoly programozokóknak ez vörös posztó, de hát ez legyen az ő bajuk.
-
CSorBA
őstag
válasz
martonx #3579 üzenetére
Ezzel egyetértek.
A CSS-ben is igen sok lehet. Volt szerencsém nemrégiben egy html alapú alkalmazást fejleszteni, aminek csak egy adott (értelemszerűen modern) böngészőn kell futnia. Annyira jól esett, hogy nem kellet fallbackelni, nyugodtan használhattam a CSS3 teljes tárházát. Talán egyszer eljön ez az idő a teljes webes környezetben
-
martonx
veterán
válasz
Sk8erPeter #3578 üzenetére
A HTML+js+css kombó, már sokan sokfelé megmondták, hogy a vicc kategória. Minél komolyabban használod, annál tragikusabb.
Másrészt mindenen elfutnak, és ha nem kell bennük megváltani a világot, akkor azért tűrhető energia befektetéssel ki lehet hozni belőlük elég sokat. Ráadásul ha ilyen ütemben fejlődnek (plusz a böngészők, mobil eszközök beépített böngészői is), akkor tényleg ez lesz a jövő. A html+js+css kombó közül mostanra egyértelműen a js a leggyengébb láncszem, erre nagyon ráférne egy alapos ráncfelvarrás. -
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.
-
válasz
Sk8erPeter #3576 üzenetére
Köszi, igazatok van, tudom, csak egyszerűbb volt megkérdezni kb 30mp alatt mint utána nézni.
Még egy dolgot kérdeznék, valami nagyon modern megoldásokat tartalmazó, a javascriptet alapjaitól bemutató video/dokumentáció/weboldal/könyv stb-t tudnátok ajánlani? (angol vagy magyar nyelven)
-
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... -
Jim-Y
veterán
Amit eddig láttál az még a nagyon alapfelhasználás. Ezen felül tudod szinezni a mapot, más háttérszínt tudsz megadni, megszabhatod, hogy mi jelenjen meg a mapon (országutak, főutak, hegyek stb..), heatmepet is tudsz csinálni. Magyarán ki tudod terjeszteni a térkép működését.
Pl amire én használtam: méréseket jelenítettem meg egy saját térképen, minden mérés az értékétől függően más színű ponttal jelent meg a térképen, és egy pontra kattintva egy másik ablakban megjelentek az adatai. A koordinátákat és az adatokat adatbázisból vettem, és volt egy Settings pluszban hozzáadott gomb a térképen amivel a térkép kinézetét lehetett beállítani.
megj: például az apival azt is meg tudod szabni, hogy mi történjen ha a térképre kattintanak, a sima beágyazással ezt sem tudod megcsinálni.
Maga a kérdés is kábé olyan volt, mintha azt kérdezted volna, hogy miben különbözik ha egy weboldal printscreenelt képét küldik el neked, vagy ha magát a weboldalt.
-
Sziasztok,
Ez a google maps js api miben tud többet ahhoz képest mikor kikeresünk egy adott helyszínt a google maps-en és annak a megosztólinkjét copypasteoljuk az oldal html forrásába?
-
Hege1234
addikt
válasz
Sk8erPeter #3572 üzenetére
köszönöm szépen!
-
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:
-
Hege1234
addikt
igen regeltem is újat de nemtudom összehozni!
-
Hege1234
addikt
lenne egy olyan problémám amivel hónapok óta küzdök
van egy térkép megjelenítésem ami az eredeti oldalon szépen le is fut
viszont a tüköroldalon már hibát ír ki
eredeti
tükör(vagy minek nevezik ?)
itt már elszáll ezzel az api hibávalhogy tudok egy teljesen újat csinálni mindkét oldalra?
mert eredetileg csak 1 oldara volt az api regelve (amit nem én csináltam)ilyen a script
<div id='elerhetoseg_div'>
<img class='contact_img' src='./kepek/small/elerhetoseg_kep.jpg'>
<div id='map' style='width: 520px; height: 300px; float: right; margin-top: 20px; margin-right: 15px'></div>
<script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAABD-wgyp55XtjATFDY-GlWxSI23GfI6Vg4NQIHQ2aKR1xcv-8oBQ2lEetLqK2wIFtwPzuqlvEPyPNqQ' type='text/javascript'></script>
<script type='text/javascript'>
//<![CDATA[
function startime(){
setTimeout('loadMap()', 1000);
}
function loadMap(){
var map = new GMap(document.getElementById('map'));
map.centerAndZoom(new GPoint(16.540793, 47.397945), 2);
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var point = new GPoint(16.540793, 47.397945);
map.openInfoWindowHtml(point, '<strong>Gabi szépségszalon<br />9730 Kőszeg, Borsmonostori út 1.</strong><br /><strong>Bejelentkezés:</strong> +36 30 902 8306<br /> <strong>Nyitvatartás:</strong> <br />Hétfőtől péntekig 7.30-19.00<br />Szombaton 7.00-14.00<br /><strong>GPS Kordináta:</strong> 47° 23\' 53\" N, 16° 32\' 27\" E');
map.addOverlay(new GMarker(point));
}
//]]>
if (GBrowserIsCompatible()) {
window.onload = startime();
}
</script>
</div>köszi előre is!
-
G.F.
aktív tag
válasz
Sk8erPeter #3566 üzenetére
Köszönöm szépen a megoldásokat mindkettőtöknek...
-
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
-
Jim-Y
veterán
válasz
Sk8erPeter #3564 üzenetére
Én ezt már csak annyival egészíteném ki, hogy a főmenükre állítanék egy listenert, és click event esetén hozzáadnám az itemhez, vagy elvenném belőle a current class-t. Így
Persze a className = '' helyett jobb lenne írni egy függvényt ami csak a currentet szedi ki, de azzal már nem akartam bonyolítani a kódot, és jquery-vel ez egyszerűbb is..
-
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.
-
Jim-Y
veterán
-
#36268800
törölt tag
Hogyan tudom azt megoldani, hogy a felhasználótól bekérek egy linket, majd ezt megjelenítem úgy, hogy egy szöveget alakít át hivatkozássá?
Pl.:
Írd be a hivatkozást!
http://www.google.huA hivatkozás itt érhető el.
<script>
hiperhiv = prompt("Írja be a hivatkozást!");
document.write( );
</script> -
G.F.
aktív tag
Van egy menüm, ami most úgy működik, ahogy kell: [link]
Én viszont azt szeretném, ha az aktiv menüponthoz tartozó submenük mindig látszódnának. Én a javascripthez egyátalán nem értek, de 'martonx' fórumtárs egy másik topikban javasolta, hogy nézzek szét itt, hátha kisegít valaki egy javascripttel. Előre is köszönöm a fáradozásaitokat.. -
#36268800
törölt tag
válasz
Sk8erPeter #3559 üzenetére
Köszönöm mindkettőtök válaszát! Utána nézek az anyagoknak.
-
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.
-
Jim-Y
veterán
válasz
#36268800 #3557 üzenetére
Szia
Szerintem először ezeket fusd át: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide
Nekem van egy könyvem, kiadóban kiadott magyar nyelvű könyv, ami szó szerint lefordította ebben a guide-ban lévő részeket, és azt saját tudásként adja elErgo én nem sz*r*znék (már bocsánat) könyvekkel, hanem ezzel a guide-dal szereznék egy alapvető tudást, majd tutorialok követésével etc szereznék gyakorlatot is a helyedben. üdv
És itt is vannak még hasznos linkek: [link]
-
#36268800
törölt tag
Üdv!
Itt a nyár, rengeteg a szabadidő, szinte nem is tudok vele mit kezdeni, gondoltam belefogok a JavaScript tanulásába. A kezembe akadt egy könyv, "Tanuljuk meg a JavaScript használatát 24 óra alatt", de sajnos ez csak 2002-es kiadás. Érdemes lesz átfutnom a könyvet, hogy legyen egy alapom a további tanuláshoz, vagy nagyon elavult? Milyen könyveket ajánlanátok a folytatáshoz?
-
KaoszTom
aktív tag
Sziasztok!
Valaki tudna írni egy egyszerű példát arra, hogy ezt hogy kell megcsinálni?
HTML-ben van néhány select beviteli mező, és ezeknek a módosításakor szeretnék egy kiírt értéket változtatni.Ha tudtok valami hasonló tutorial-ról az is jó lenne.
-
Jim-Y
veterán
válasz
nymarti #3552 üzenetére
Én egy ilyet csináltam: http://jsfiddle.net/Jim_Y/Ls55L/1/
Próbáltam a Sk8erPeter által korábban linkelt konvenciókat figyelembe venni, mint:
ne nagyon legyen javascript a html kódbanés most is mint mindig azért várom a kritikát ^^
-
nymarti
csendes tag
válasz
Sk8erPeter #3551 üzenetére
köszi nagyon!
- köszönöm a tanácsot, átneveztem a dolgokat, hogy később is tudjam, hogy mi micsoda.
- meghívtam a select15() és már működik, amit szerettem volna
- igen, azt kifelejtettem, hogy mi az s[16], de azt amúgy egy getElementById-val hoztam létre -
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ó. -
nymarti
csendes tag
sziasztok!
most kezdtem nemrégiben foglalkozni javascript-el és lenne egy rövid kérdésem.
van egy táblázatom, ahol vannak legördülő menük és szeretném, hogyha kiválasztom az egyik legördülő menü [1] opcióját, akkor a következő legördülő menü nem lenne elérhető.
két lehetőséget is kipróbáltam, de valamiért nem működikaz egyik:
function select15(ref) {
switch (ref.selectedIndex) {
case 0: s[16].disabled=false;
break;
case 1: s[16].disabled=true;
break;
case 2: s[16].disabled=false;
break;
case 3: s[16].disabled=false;
break;
case 4: s[16].disabled=false;
break;
}
magas();
return;
}a másik:
function select15(ref) {
if (ref.selectedIndex==1) {
s[16].disabled=true;
s[16].selectedIndex=0;
} else {
s[16].disabled=false;
}
magas();
return;
}html:
<select id="sel15" name="" onChange="magas();">
<option value="0" selected>1</option>
<option value="1">2</option>
<option value="2">3</option>
<option value="3">4</option>
<option value="4">5</option>
</select>
<select id="sel16" name="" onChange="magas();">
<option value="0" selected>1</option>
<option value="1">2</option>
</select>van valami tippetek, hogy mit ronthattam el?
köszi a segítséget! -
spammer
veterán
válasz
ahetaton #3546 üzenetére
Tessék [link]. Biztos lehet szebben, jobban, de nem én találtam ki, régebben találtam, működik, ez a lényeg. A last_name mező nevét átírtam phone-ra, mert elvileg annak a mezője.
szerk:
input mezők esetében be lehet tolni egy required attribot is:
pl.: <input type="text" required>
Modern böngészőt felismerik, régi szarokon nem megy, arra jó a js.
-
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).
-
ahetaton
csendes tag
Sziasztok mesterek!
Hogy lehet azt megoldani JavaScriptben, hogy egy alert ablakot dobjon fel, ha nincs kitöltve a formom?
Előre is köszönöm a segítséget!
http://jsfiddle.net/B8FPP/
-
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.
-
Jim-Y
veterán
sziasztok, segítséget szeretnék kérni. JSFiddle példát szeretnék toggle efecttel az oldalamba ágyazni, jól is működik, de amikor a toggle-el lenyitom a live sample-t, és meg akarom nézni az eredményt, akkor nem mutat semmit.
Ha nem használok toggle efektet, csak simán beágyazom az oldalba, vagy max a visibility-t állítom akkor jó.
-
Jim-Y
veterán
válasz
Sk8erPeter #3539 üzenetére
Na.. pont ilyenre voltam kíváncsi, sajnos nem js-el dolgozom, így a gyakorlat nem tud az ilyenekre rávezetni, pedig nagyon szeretem a javascriptet. El is mentem a prezit, köszi
Többieknek is köszi a választ.
-
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. -
fordfairlane
veterán
A HTML írja le a az oldal struktúráját, a CSS az oldal elemeinek megjelenését, a Javascript a viselkedést (amit aztán most már részben a CSS kezd átvenni). Ez a három rész három különböző aspektusa annak a valaminek, amit a felhasználó lát. Ezért is van rá háromféle jelölőnyelv, kettő deklaratív, egy pedig imperatív jellegű. És ezért érdemes három, egymástól elkülönülő részbe szervezni, és jól definiált interfészen keresztül kötni össze őket.
Az ilyen "separation of concerns" megközelítések akkor számítanak, ha a szoftver bonyolultsága meghalad egy szintet. Viszont sok szoftver indul egyszerűnek és aztán menet közben komplikálódik el, így ha valakinek ez nem jelent külön erőfeszítést, érdemes ezeket az elveket követni minden oldalnál a kezdetektől fogva.
-
martonx
veterán
Mert egy bizonyos szint felett tökéletesen átláthatatlanná, követhetetlenné teszi a kódot.
Debugolást, kód menedzselést is nagyban megnehezíti.Persze ezek mind olyan szempontok, amikkel egyszemélyes fejlesztők simán együtt tudnak élni, sőt ha nem tartják be ezeket a szempontokat, talán még gyorsabban is tudnak gányolni, mint ezen elvek mentén. Aztán persze két év múlva, meg 3 fejlesztővel 3 féle gányolási stílussal később, megy az átkozódás, mikor egy ilyen kódban bármin is módosítani kell.
Mondok egy példát. Van egy js függvényed, amihez hozzá kell adnod egy plusz argumentumot. Nem mindegy, hogy elég csak .js file-okban keresni, módosítani, vagy netán kismillió egyéb html-ben, php-ben, tpl, xsd-ben és még a jó ég tudja mi mindenben kell keresni. És mindez csak azért mert anno valakinek jobban kézreállt milliónyi onclick eseménybe belegányolni, ahelyett, hogy 1-2 rendes általános javascriptes eseménykezelőben kezelte volna le mindazt.
-
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-javascript -
Jim-Y
veterán
válasz
Sk8erPeter #3537 üzenetére
Egyébként van arra vonatkozó ajánlás, vagy felhívás, hogy az inline miért rosszabb? azon kívül, hogy kevésbé lesz modulokra bontott a kód?! Egyébként igazad van, sokszor szerkesztettem az eredeti hsz-t, a végére lett csak paraméterben átadva az objektum. Jó lenne egyszer valami hivatalos irományt olvasni ilyen kódolási konvenciókról, mert láthatóan ha a saját fejem után megyek, az nem jó :/
-
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!! -
Jim-Y
veterán
válasz
ahetaton #3534 üzenetére
<script>
function switchMain(item, button) {
(item.style.visibility == "hidden") ? item.style.visibility = "visible" : item.style.visibility = "hidden";
button.style.visibility = "hidden";
}
</script>
<div id="main" style="visibility: hidden">
Hello World!
</div>
<p>
<a href="#" onclick="switchMain(document.getElementById('main'), this);" id="button">Change</a>
</p>De ha csak el akarod tűntetni a gombot, és megjeleníteni a "main"-t, akkor:
<script>
function hideMain() {
document.getElementById("main").style.visibility = "visible";
}
</script>
<div id="main" style="visibility: hidden">
Hello World!
</div>
<p>
<a href="#" onclick="hideMain(); this.style.visibility = 'hidden';" id="button">Change</a>
</p> -
ahetaton
csendes tag
Sziasztok mesterek!
van egy kódom ami majdnem tökéletesen működik:
<script>
function getStyle()
{
var temp = document.getElementById("main").style.visibility;
return temp;
}
function switchMain()
{
var current = getStyle();
if( current == "hidden" )
{
document.getElementById("main").style.visibility = "visible";
}
else
{
document.getElementById("main").style.visibility = "hidden";
}
}
</script>
<div id="main" style="visibility: hidden">
Hello World!</div>
<p>
<a href="#" onclick="switchMain()">Change</a></p>Azt, hogy lehet megoldani, hogy mikor megnyomom a Change gombot, az is eltűnjön?
Köszönöm!
-
ferensz
senior tag
válasz
Sk8erPeter #3532 üzenetére
Nagyon szépen köszönöm a segítségedet, de szombatra el kellett készülnöm vele, így jquery accordionnal oldottam meg végül a dolgot, de tanulásképpen áttanulmányozom a kódodat
-
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.
-
CSorBA
őstag
Semmi, még sem jó
-
martonx
veterán
ja, hogy nem a példával volt a baj, hanem a javascripttel? Kivételesen ebben is tökéletesen egyetértek a tanárral.
Mára minden hülye a Jquery-t használja (köztük én is), miközben fingjuk sincs a tényleges javascriptről. Ráadásul szvsz mostanra a Jquery erősen túl van hype-olva, a modern böngészőkben sok esetben csak minimálissal több munka natív js-ben megcsinálni ugyanazt, mint jquery-vel.
Szerintem az oktatásnak pont az a lényege, hogy az alapokat tanítsa meg. Olyan ez mintha úgy tanítanának programozni, hogy soha nem tanítják meg, hogy mi az a tömb, meg objektum, hanem nesze itt a spring mvc, aztán java-zunk.
Persze akkor lenne igazán szinvonalas az oktatás, ha a tisztán javscript-elés után, ugyanezt a példát megcsinálnák mondjuk jquery-vel, is hogy a tudás legyen naprakész is. De ez már a vágyálom kategória. -
Lacces
őstag
válasz
Sk8erPeter #3524 üzenetére
Jah, de a miértjét csak most tudtam meg. (Bár ez full feleslegs volt
).
martonx: Lehet magamból indultam ki. Én nem értem, hogy miért nem engedte jQuery-ben... (Nem értem, hogy miért nem lehetett volna jQuery-ben ami már majdnem alapkövetelmény, és általában ezt is használják a webfejlesztők többsége.)
-
ferensz
senior tag
válasz
Sk8erPeter #3526 üzenetére
Itt van a JSBinre felpakolva. Ha az adott link neve elé kattintasz, akkor lenyílik az "almenü". Nekem azt kellene valahogy elérnem, hogy ha nincs URL megadva az adott linkhez, akkor nyissa le az alatta lévő childokat, ha van URL-je és child elemei is, akkor az URL-re navigáljon, ha pedig nincsenek child elemei, de URL-je igen, akkor is navigáljon oda.
-
ferensz
senior tag
Sziasztok!
ASP.NET-ben fejlesztek egy vertikális menüt, aminek az elemeit egy xml-ből szedem. Amikor megvan a fám, hogy melyik menü alatt milyen almenü helyezkedik el, akkor egy netről lesett javascript a kellő helyekre span-eket pakol be, hogy lenyitható legyen az adott menüpont. A problémám az lenne, hogy a linkem előtt látható spanre kattintva szépen le is nyílik a kellő rész, viszont nekem az kellene, hogy magára a linkre kattintva nyíljon le ami alatta van.
Tudom, hogy egy kicsit kusza, de most szaladtam bele először ilyenbe.
A javascript, amit felleltem:
this.sitemapstyler = function(){
var sitemap = document.getElementById("sitemap")
if(sitemap){
this.listItem = function(li){
if(li.getElementsByTagName("ul").length > 0){
var ul = li.getElementsByTagName("ul")[0];
ul.style.display = "none";
var span = document.createElement("span");
span.className = "collapsed";
span.onclick = function(){
ul.style.display = (ul.style.display == "none") ? "block" : "none";
this.className = (ul.style.display == "none") ? "collapsed" : "expanded";
};
li.appendChild(span);
};
};
var items = sitemap.getElementsByTagName("li");
for(var i=0;i<items.length;i++){
listItem(items[i]);
};
};
};
window.onload = sitemapstyler;Ha esetleg lenne valakinek valami ötlete, hogy hogyan lehetne megoldani a bajomat, azt nagyon szépen megköszönném.
-
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. -
CSorBA
őstag
válasz
martonx #3521 üzenetére
Igen, arra hajlok, megcsinálom css-el. IE alatt gondoltam függőleges lesz, de még az a nyamvadt filter sem működik normálisan, vagy csak a kompatibilitási módban nem. Valami fallbacket fogok kitalálni, vagy lebeszélem őket erről, ugyanis elég rondán tud renderelni dőlt szöveget a firefox, meg a chrome is. IE9 és IE10 viszont gyönyörűen
-
Jim-Y
veterán
Pont ugyanez a helyzet jQuerys esetben, ott is ha aszinkron használod a $.ajax-ot, akkor ha kezdeni akarsz valamit a visszakapott értékkel azt csak a success ágban teheted. Meghívhatsz egy függvényt paraméterben az eredménnyel, de mégsem olyan mintha kimentenéd későbbi használtra
Itt is pont ez a helyzet. async vs syncKicsit olvass vissza vagy itt, vagy a jquerys topicban, a napokban volt erről szó.
-
Karma
félisten
Megőrzi az, csak a kódod többi része szerintem már rég lefutott, mire a válasz megérkezik és beállítódik. Úgy kellene megírnod a programot (legegyszerűbb nem-halálfejes esetben - én legalábbis tuti megbuktatnám azt, aki a szinkron hívást használja -), hogy azokat a részeket, amik a gep jövőbeli értékét használják, egy külön függvénybe szervezed, amit a callbackből hívsz meg. Azaz kvázi félbevágod a programod futását, amíg meg nem jön a válasz.
Egyébként jQuery-ben pont ugyanezt teszed, csak van egy előre meghatározott promise forma a jövőbeli eseményekhez.
-
Lacces
őstag
Igen, úgy alert boldogság!
De nem őrzi meg az értéket utána! Mintha csak ott van meg benne... abban az IF ágban él a gep változó értéke, azon kívül már nem!!! És nem tudom, hogy miért...
Jim-Y : köszi, így jó. Az nem baj, hogy most blokkolja, nem oszt nem szoroz
. Az eredmény megkapása után nem is lenne szabad most ennek a proginak tovább mennie. De így kimenti.
Én egy hide-olt inputba raktam ki az adatot és onnan beolvasni, de az nem volt olyan szép.Köszönöm szépen mindkettőtöknek
-
Jim-Y
veterán
Vagy legyen szinkron a kommunikáció, és akkor ki tudod menteni az eredményét egy változóba. Bár pár napja pont erről beszélgettünk, hogy hiába szebb szinkronosan kimenteni az eredményt egy változóba, nem érdemes ezt használni, mert addig blokkolja a többi folyamatot?!
ajaxRequest.open("GET", "gep.php", false);
-
Karma
félisten
Az ajaxRequest elküldése egy aszinkron művelet (lásd az AJAX rövidítés első betűjét
), így ha közvetlenül az elindítás után alertelsz, nyilván nulla lesz.
Tedd az alertet a "gep = ajaxRequest.responseText;" sor után a callback függvénybe, és instant boldogság. Legalábbis már meglesz az esélye.
-
Lacces
őstag
Hali,
jQuery nélkül (unokaöcsém beadandója... és a felsőoktatás szidása nélkül)
Hogyan tudnám egy JS-es Ajax hívás eredményét átadni JS változóba? (Az oké, hogy mindenhol a neten a html kiírást látom, meg a jquery-st, de nekem a sima js-be kellene átadnia)
És én meg igazából sosem használtam az alap JS-t AJAX-hozKód:
// Gép eredményének inicializálása
var gep = 0;
var ajaxRequest; // ajax kérő változó deklarálása
// Ajax kérő változó inicializálása a böngésző alapján
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer böngésző
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
gep = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", "gep.php", true);
ajaxRequest.send(null);
alert(gep);Az alert utasítás, mindig 0-t ad...
A segítséget előre köszönöm
-
Jim-Y
veterán
Egy lehetőség, amit kliens oldalon csinálhatsz.
http://jsfiddle.net/Jim_Y/qvdHS/2/ -
fordfairlane
veterán
Én is belefutottam hasonlóba, ott egy táblázat fejlécében kellett volna 90-kal elforgatni a hosszú header szövegeket. Olyan sok cross-browser jellegű probléma lépett fel, hogy végül inkább szerveroldalon generáltam képekbe a szövegeket, PHP-ben, a GD könyvtárat használva.
-
Karma
félisten
google://jquery+rotate első találatok között ez elég szimpatikusnak tűnik. Gyakorlatilag megcsinálja helyetted azt a pár sor CSS-t, amit kézzel is megírhatnál
-
CSorBA
őstag
Szöveget szeretnék elforgatni, kb 60 fokban, a képen látható módon:
Nos, ki mit hogy ajánlana? Nem akarok CSS3-at használni, mivel elég kompatibilisnek kellene lennie, így jquery mellett döntenék. Tud valaki valami jó rotate plugint?
-
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. -
martonx
veterán
válasz
Sk8erPeter #3504 üzenetére
Betöltéskor is simán lehet egy ilyen trükkel jópár %-kot faragni a kódod méretéből. Nézd meg a jquery-sek mit össze nem kínlódnak pár Kb-nyi csökkentésért. Plusz a namespace-be szervezés, amúgy is hasznos dolog, összetettebb javascript-es oldalnál.
Besimerem amúgy, hogy ez erősen szőrszál hasogatás persze, de ha már js topik, meg helyes módszertanok. -
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.
-
martonx
veterán
válasz
Sk8erPeter #3501 üzenetére
Erről beszéltem. Egyébként ha már karakter baszók akarunk lenni
(mondjuk egy 1000 soros plain js-nél már számíthat méretben), érdemes var w = window illetve var d = document konvenciókat használni, és utána már csak d.getelement.byId, meg w.addeventlistener-eket használni.
Vagy eleve belerakod egy anonim önmeghívó funkcióba, így a js namespace probléma is pipa:(function(d,w){
//Itt jön a kódod
d.getelementbyid...
w.addevenetlistener...
})(document,window) -
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.
Új hozzászólás Aktív témák
Hirdetés
- Autós topik
- Anglia - élmények, tapasztalatok
- Milyen házat vegyek?
- Renault, Dacia topik
- Kerékpárosok, bringások ide!
- SSD kibeszélő
- Fájdalmasan gyenge kijelzőt válaszott a Switch 2-höz a Nintendo
- Milyen videókártyát?
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- 3D nyomtatás
- További aktív témák...
- Samsung Galaxy A04 128GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! Gigabyte H610M i5 12400F 16GB DDR4 512GB SSD RX 6700XT 12GB Zalman S2 TG Seasonic 650W
- ÁRGARANCIA! Épített KomPhone i5 14400F 32/64GB RAM RTX 5060Ti 8GB GAMER PC termékbeszámítással
- Üzleti Fujitsu Lifebook u7510 15,6" FHD IPS 2021/08. havi gyártás
- BESZÁMÍTÁS! ASRock B250 i5 6600 16GB DDR4 256 SSD 500GB HDD GTX 1050 2GB Zalman Z1 Njoy 550W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest