- Ismét életjelet adott magáról a Mionix, de most egy ízig-vérig csúcsegérrel
- Bővítményekkel zárkózna fel az Apple az AI versenyben
- TV vásárlási útmutató 2026 – OLED, QLED, melyiket érdemes megvenni?
- Olcsóbb opció jött a Keychrontól a num pados Q6 Ultra 8K-ra
- Nem muszáj egy vagyonba kerülnie egy korrekt egérnek
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Egérpad topik
- VR topik
- Soundbar, soundplate, hangprojektor
- A jövőben nem csak a gazdagok kiváltsága lehet az Intel CPU-k tuningja
- Vezetékes FEJhallgatók
- Kettő együtt: Radeon RX 9070 és 9070 XT tesztje
- Kompakt vízhűtés
- 3D nyomtatás
- Nvidia GPU-k jövője - amit tudni vélünk
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
-
Frissítve: 2014-02-25 10:20 Téma összefoglaló
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
-
Jim-Y
veterán
http://jsfiddle.net/jkx6jcvL/1/
Biztos lehet jobban is.
-
DS39
nagyúr
nálam ez nem működik. (Firefox 24 ESR)
akkor se ha kiszedem a második "sávot". -
Jim-Y
veterán
Szerintem nem ártana működő példát feltenni
Egyébként: jQuery.closest() -
Karma
félisten
Nananananananana Batman!
![;]](//cdn.rios.hu/dl/s/v1.gif)
Csak a megfelelő kulcsszavakra kell keresned Google-ben, és láthatod, hogy elég népszerű a Blender és a Three.js library összekötése, amivel pont azt össze tudod hozni WebGL alapon, amit szeretnél. Például itt van egy tutorial.
-
Sk8erPeter
nagyúr
"Nanananana..." Nem lehet, hogy egy kissé topicot tévesztettél?

-
martonx
veterán
Akkor tegyél be unity-t a web oldaladba. Az kimondottan pont erre való.
-
Jim-Y
veterán
Szia. Én nem értek túlságosan a jQuery-hez, de még a tanulásod elején megemlíteném, hogy érdemes 1-2 good-practice-t betartani.
Az egyik ilyen, hogy kerüljük a this használatát. Amikor csak lehet használjunk mást. A példádban is lehetett volna mást használni, és ennek nem csak az az előnye, hogy olvashatóbb, és érthetőbb lesz a kód, vannak olyan helyzetek, amikor rossz működésre vezet a this használata.
Demo (rossz eset, amikor a példád hibázna, nem várt eredményre jutna):
http://jsfiddle.net/Jim_Y/tsucL8je/18/
Mi történt?
- két divet ágyaztunk egymásba. jQuery-vel egy eseménykezelőt állítunk a div-re, és azt várnánk, hogy amelyik kockára kattintunk, az majd 100px-el lejjebb kerül. Nem ez történik!
- ad1: propagation, a selector nem egy, hanem 2 elemet is "matchel", először azon fut le az eseménykezelő amire ténylegesen kattintottál, tehát a .inner, majd propagál és a .outer div-en is le fog futni az eseménykezelő.
- ad2: a this mindig az aktuálisan "propagált" elemre mutat. Tehát az első loop-ban a this a .inner, majd a következőben a this a .outerEmiatt mindkét div lejjebb fog kerülni, talán 100px-nél nem is olyan feltűnő, de egy kattintásra az a div amin eredetileg kattintottunk (.inner) összesen 200px-el csúszott lejjebb.
Megoldás vol1:
Cseréljük le a this-t, ahogy eredetileg is javasoltam event.target-re.
http://jsfiddle.net/Jim_Y/tsucL8je/19/
Mi történt?
- még mindig furcsán működik, még mindig nem azt tapasztaljuk amit szerettünk volna, most egy kattintásra a .inner kocka 2x100px-el lejjebb került.
Ez azért van, mert az event.target minden loopban ugyanaz, arra mutat amelyik elemre kattintottunk az egérrel. (megjegyzés: az event.currentTarget minden esetben === this)
Első ciklusban event.target -et eltoltuk 100px-el, majd jön a második ciklus (propagation ugyebár, vagy bubbling effect, ki hogy ismeri) ahol ugyancsak event-targetet toltuk el 100px-el.
Megoldás vol2:
http://jsfiddle.net/Jim_Y/tsucL8je/20/
Mi történt?
- itt már szinte az történik amire számítottunk, amire kattintunk az 100px-el lejjebb kerül és nincs propagation. Persze ha a .outer div-re kattintunk akkor az inner is lejjebb kerül, ez annak a következménye, hogy az inner az outeren belül van foglalva. Ezen nem tudunk segíteni, csak ha máshogy írjuk meg a html-t.
Összefoglalva:
* event.target statikus, mindig arra mutat amire ténylegesen kattintottunk (vagy általánosabban fogalmazva, amelyik node-on az esemény létrejött)
* this az változik, illetve sok esetben nem lehet megmondani, hogy most éppen mire is mutat a this, jobb ezt elkerülni.
* event propagation. Ezt is figyelembe kell venni bizonyos esetekben.Üdv
-
fordfairlane
veterán
Ha html attribútumban kezeled az eventet, ( onclick="onClick()" ) akkor a függvény nem kap Event objektumot.
<img id="1" class="small" alt="Small img" src="imgs/1.jpg">
<script>
function onClick(Event) {
...
}
document.getElementById("1").addEventListener("click", onClick);
</script> -
Sk8erPeter
nagyúr
Jim-Y már adott jótanácsokat, ezenfelül még annyi, hogy ilyen "csak-te-tudod-mi-az"-nevű elemeket ne használj, kerüld az ilyen nem túl beszédes "e", meg "o" id-ket, ahogy kerüld az "1", "2" nevű id-ket is, rossz, nem átlátható, más által nem megérthető a kód. A hosszú if-else-eket is érdemes kerülni, használj switch-case-t.

Tényleg rakj fel egy egyszerű példakódot, és akkor gyorsabb lesz a segítségnyújtás.

-
Jim-Y
veterán
Legyszi oszd meg a teljes kododat, mert elkepzelheto, hogy te a javascript kodot a body vegen adtad hozza, es az onClick nem letezik meg akkor, mikor rakotod az onclick esemenyre.
Masik hiba, hogy ha igy hivsz meg egy metodust, akkor nincs hidden event metodus, azt az addEventListener teszi hozza a hatterben.
Harmadik hiba, hogy nehezen modosithatova teszed a kodot azzal, hogy az esemenyt a html-ben definialod es nem a js-ben, ahogy azt kene, illetve ahogy erre mar kaptal peldakodot is tolem, es Sk8erPeter-tol is.
Peldaul csereld ki a kododban:
<img id="1" class="small" alt="Small img" src="imgs/1.jpg" onclick="onClick(this.id)"></img>
function onClick(id) {
console.log(id);
}Es egybol meglesz az id.. de ha ezt ugy csinalnad, ahogy kene (nem biztos, hogy ez lenne a legjobb modszer, de a jelenlegidnel jobb):
Gondolj bele, ez mar csak azert is jobb, mert ha onclick eseten tobbe mar nem az onClick()-et akarod futtatni, akkor nem kell annyi helyen belenyulni a html kodba, ahany keped van
<img id="1" class="small" alt="Small img" src="imgs/1.jpg" onclick="onClick(this.id)"></img>
<img id="2" class="small" alt="Small img" src="imgs/1.jpg" onclick="onClick(this.id)"></img>
<img id="3" class="small" alt="Small img" src="imgs/1.jpg" onclick="onClick(this.id)"></img>
<img id="N" class="small" alt="Small img" src="imgs/1.jpg" onclick="onClick(this.id)"></img>Itt most N-szer kene atirni, mig az en verziomban egy helyen atirod a kodot, es kesz.
Nem veletlenul best-practise az, hogy HTML-be NEM irunk javascriptet, ha ez megoldato, es JS-be NEM irunk CSS-t ha ez megoldhato.
-
Jim-Y
veterán
Tippre azert, mert vagy rossz az ev.target nem az amire gondolnal, vagy mert az ev.target-nek nincs id-je, vagy az nem 1.
-
Jim-Y
veterán
Szia. En eleg nagy eselyt latok ra, hogy inkabb a feladatot kene mashogy megoldanod, mert szerintem rosszul kozelited meg a problemat.
A gombokra kulon listenert szokas aggatni, igy nem szokas az id-t igy lekerni. De ha megosztod a kodod tobbi reszet is, peldaul jsfiddle-on, akkor tobbet tudunk majd segiteni.
Egy gombra kattintas pszeudokodja valami ilyesmi kene hogy legyen:
myButton = leker DOM element id (vagy mas) alapjan
myButton addClickListener mitcsinaljon
mitcsinaljon() {}Arrol nem is beszelve, hogy == helyett === javasolt, mert elobbi bizonyos helyzetekben erdekes eredmenyekre tud vezetni. [link]
-
Sk8erPeter
nagyúr
Lehet, hogy a %windir%\System32\drivers\etc\hosts (vagyis C:\Windows\System32\drivers\etc\hosts) fájlodban nincs megfeleltetés a localhostra:
127.0.0.1 localhost(bár tudtommal defaultból szokott lenni)
-
Jim-Y
veterán
changeImageSrc(largeImage, sourceUrl); hellyett
changeImageSrc(large, sourceUrl);
-
Jim-Y
veterán
Mert a script elemet nem lehet igy irni.
Ird igy <script src=""></script> -
Sk8erPeter
nagyúr
A jsbin.com és a jsFiddle.net is úgy működik, hogy injektálja a kódot az éppen megjelenített oldalba, csak külön-külön paneleket biztosít, hogy szépen szétválasztva tudd szerkeszteni a különböző nyelvekhez (CSS, JavaScript, HTML) tartozó kódokat, pont úgy, ahogy "élesben" is illik, csak élesben annyival egészül ki a dolog, hogy ezekre a fájlokra a hivatkozásokat is beleszúrod az oldaladba.
Ez ekvivalens Jim-Y korábbi megoldásával: http://jsbin.com/tusunami/2/edit
és persze a <script> taget akár a </body> zárótag elé is lehetett volna rakni, ha úgy jobban esik.
(A kódot nincs időm átvariálni saját koncepcióra.) -
Jim-Y
veterán
Hú-ha, hogy te ezért mit fogsz itt kapni
Nem írunk így javascript kódot!Itt van egy alap cucc kiindulásnak, hogy hogyan kellett volna inkább:
http://jsbin.com/tusunami/1/edit?html,js,outputNincs időm utánajárni, de biztos van jobb megoldás mint a képek url-jét cserélgetni.
-
martonx
veterán
A js elérési útja van rosszul megadva?
-
fordfairlane
veterán
A képek elérési útja nem jól van megadva, mert mondjuk abszolut URL-ek vannak benne, a meghajtó betűjele, ami másik gépen már nem működik. Esetleg a képeket nem másoltad fel.
-
Sk8erPeter
nagyúr
Kód nélkül tök felesleges elkezdeni tippelgetni.

Új hozzászólás Aktív témák
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Milyen légkondit a lakásba?
- A fociról könnyedén, egy baráti társaságban
- Huawei P10 - pisztácia nem is volt
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Battlefield 6
- Xiaomi 17 Ultra - jó az optikája
- ASUS routerek
- Egérpad topik
- YouTube
- További aktív témák...
- Vásárlunk iPhone 12/12 Mini/12 Pro/12 Pro Max
- Dobozos! Playstation 4 Slim 1 TB kontroller 6 hó garancia, számlával!
- TP-Link Archer TX50E AX3000 PCI-e WiFi Kártya!
- LG UltraGear 34GS95QE OLED Monitor! 3440x1440 / 0.03ms / 240Hz / FreeSync / G-Sync! BeszámítOK!
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RTX 5060 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Egyébként: jQuery.closest()
![;]](http://cdn.rios.hu/dl/s/v1.gif)


Nem írunk így javascript kódot!

