Hogy vizsgálható, hogy az egér valami fölött van JS-ben?

Hogy vizsgálható, hogy az egér valami fölött van JS-ben?
2019-01-14T14:21:52+01:00
2019-01-15T14:23:45+01:00
2022-10-15T21:40:27+02:00
Tomi_T2
Sziasztok!
Olyan gondom adódott JavaScript programozás közben a kódommal, hogy nem működik az a függvényem, amely azt hivatott ellenőrizni, hogy az egérmutató egy bizonyos objektum fölött van-e éppen.
Ez a bizonyos objektum még két társával együtt egy ikon, amelyek csak egy gomb lenyomása után rajzolódnak ki a program futása során, és nem is maradnak meg végig.
Ez volna az egérellenőrzésem:

vaszon.addEventListener("mouseover", egerfelette, false); function egerfelette(eger) { switch (aktivfelulet) { case 2: if (eger.clientX >= tabortuzikon.xhely && eger.clientX <= tabortuzikon.xhely+tabortuzikon.kepe.width && eger.clientY >= tabortuzikon.yhely && eger.clientY <= tabortuzikon.yhely+tabortuzikon.kepe.height) { tabortuzikon.kepe = tabortuz2kep; satorikon.kepe = satorkep; kijeloltesikon = 1; alert("1"); } ...
Próbáltam clientX-et, pageX-et, meg ami csak létezik a párjástúl megadni, de nem csinál semmit a program.
Az aktivfelulet változó egyébként a program setInterval ciklusán belül állítódik be, és ugyanitt történik az ikonobjektumok kirajzolása is.
Előre is köszönöm a segítséget; nagy szükségem van rá.
Mutasd a teljes hozzászólást!
Ha csak a címet nézném, van egy ilyen: DocumentOrShadowRoot.elementFromPoint() , de neked ez nem lesz jó, mert gondolom drawImage-vel kirajzolt képecskéről van szó, nem DOM objektumokról.
A gond inkább ott lesz, hogy a mouseover esemény csak akkor fut le, amikor az egér frissen belép a canvas fölé. Neked mousemove eseményt kéne kezelned, hiszen az majd folyamatosan generálódik, ahogy lengeted az egeret a canvas felett.
Mutasd a teljes hozzászólást!

  • Szia,

    ha jQuery-t is használsz, akkor esetleg less rá erre:

    .mouseover()
    Mutasd a teljes hozzászólást!
  • Szia!
    A bemásolt natív JS kódod nekem hiányosnak tűnik egy picit. 
    A switch-nl csak a case 2 szerepel, más nem. Az aktvifelulet változó milyen értékeket vehet fel? 
    Tudnál egy picit többet írni a működésről, esetleg itt screen shotot megosztani, ill. a consol.log-ba belenézni, hogy ad e ott valami hibát? Az, hogy "nem csinál semmit" kifejtenéd bővebben kérlek, ill. azt is , hogy minek kellene történnie.
    Előre is köszi.
    Üdv,
    Madi
    Mutasd a teljes hozzászólást!
  • Nem tudom, mi az a jQuery, de megnézem a hivatkozásodat. Egyszerű Notepad++-t használok a kódoláshoz.
    Mutasd a teljes hozzászólást!
  • Az aktivfelulet lehet 1 vagy 2, de csak a 2-es ág érdekes az ikonos gombok létezése szempontjából. A konzol nem mutat semmi hibát.
    Az ikonok létrejönnek rendesen, ha a 2-es aktivfelulet van, de nem cserélődik le a képük, ha felettük van az egér. Tkp. semmi nem történik, még egy alertes üzenetet sem sikerül kiíratni, ha ott az egér.
    Mutasd a teljes hozzászólást!
  • Ha csak a címet nézném, van egy ilyen: DocumentOrShadowRoot.elementFromPoint() , de neked ez nem lesz jó, mert gondolom drawImage-vel kirajzolt képecskéről van szó, nem DOM objektumokról.
    A gond inkább ott lesz, hogy a mouseover esemény csak akkor fut le, amikor az egér frissen belép a canvas fölé. Neked mousemove eseményt kéne kezelned, hiszen az majd folyamatosan generálódik, ahogy lengeted az egeret a canvas felett.
    Mutasd a teljes hozzászólást!
  • Köszönöm a válaszod! 
    A hibakereséshez tegyél be console.log() -ba írásokat minden lényegi pontra, pl. 1. function meghívva, 2.swich case 2 teljesül, 3. if igaz. Azért ezt javaslom, mert sok változód van és nem látszik itt, hogy azok miként vannak definiálva. Előfordulhat, hogy valamely változó nincs megfelelően definiálva. Ezeket is írasd ki teszteléshez console.log-ba.

    Az if vizsgálatod logikája jónak tűnik, és az xhely és yhely változók miatt azt feltételezem, hogy canvas-szal dolgozol. Ezek értékeit mindenképpen ellenőrizd le, mert nagyon valószínű, hogy a hiba valamely értékadásnál lesz.

    Meg lehet nézni és kipróbálni valahol live-ban a kódot? Sokat segítene a hiba megtalálásában, ha működés közben meg lehetne nézni.

    Üdv,
    Madi
    Mutasd a teljes hozzászólást!
  • Esetleg adhatnál egy linket a láthatóság érdekében (már kérte más is) és akkor lehetne esetleg többet is segíteni (bal oldalt a "Rajz pozíciók" alatt, date=2014)...
    Megj: A link forrásában keresd a "function get_board_coords(e)" kódrészt...
    Mutasd a teljes hozzászólást!
  • Köszönöm mindenkinek a segítséget és a válaszokat, de különösen Tevemadarnak, mert a mousemove-val valóban sikerült az elvárt működésre bírni a programomat, úgyhogy a te válaszodat el is fogadtam megoldásként.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd