[JS] Muispositie bepalen in DIV

Pagina: 1
Acties:
  • 201 views sinds 30-01-2008
  • Reageer

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Topicstarter
Ik heb de volgende code om de muispositie te bepalen in de body:
Java:
1
window.event.x


Nu probeer ik de muispositie te bepalen in de DIV (id=divid) met de volgende code:
Java:
1
document.getElementById("divid").clientY

Dit laatste werkt dus niet.

Waar het om gaat:
Het is een pagina waarin gescrolled kan worden. De div valt, vóór het scrollen, buiten de pagina.
Nu wil ik wel de muispositie bepalen in de DIV ook al is er al gescrolled.
De hoogte van het getal ligt, ten opzichte van alleen de body, dus hoger.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:36

crisp

Devver

Pixelated

JavaScript:
1
2
3
4
5
6
7
8
9
document.getElementById('divid').onmousemove = handler;

function handler(e)
{
    e = e || window.event;

    var mousex = e.layerX || e.x || e.offsetX;
    var mousey = e.layerY || e.y || e.offsetY;
}

works for me...

Intentionally left blank


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 09-04 16:59
Je weet dat je ook kunt afvangen hoever een pagina is gescrollt? Als je de exacte positie van je DIV weet, welke je volgens mij ook kunt bepalen met javascript, kun je dat bij elkaar optellen.

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Topicstarter
Geeft de hgele tijd undefined aan.

Om te testen if ik wel de juiste div heb doe ik het volgende:

Java:
1
alert(document.getElementById("divid").id);

Dan geeft ie aan "divid". Ik heb dus de juiste div.

Dan doe ik het volgende:
Java:
1
2
3
4
5
alert(document.getElementById("divid").offsetX);
of
alert(document.getElementById("divid").layerX);
of
alert(document.getElementById("divid").x);

De hele tijd geeft ie aan "undefined"

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:36

crisp

Devver

Pixelated

intermusic schreef op donderdag 02 februari 2006 @ 22:16:
Geeft de hgele tijd undefined aan.

Om te testen if ik wel de juiste div heb doe ik het volgende:

Java:
1
alert(document.getElementById("divid").id);

Dan geeft ie aan "divid". Ik heb dus de juiste div.

Dan doe ik het volgende:
Java:
1
2
3
4
5
alert(document.getElementById("divid").offsetX);
of
alert(document.getElementById("divid").layerX);
of
alert(document.getElementById("divid").x);

De hele tijd geeft ie aan "undefined"
Het zijn ook geen properties van je element maar properties van een event...

Intentionally left blank


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Topicstarter
Misschien een dom probeersel maar,
Java:
1
document.getElementById("divid").event.x

werkt ook niet.

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Topicstarter
Ook dit even opgezocht:

event.x
event.y
These properties hold the X and Y pixel coordinates of the cursor relative to the layer connected with the event or, for the onResize event, the width and height of the object after it was resized. (You can also use event.layerX and event.layerY, which do the same thing.)
Wat bedoelen ze precies met het vet gedrukte?

edit: Bron: http://www.elated.com/tut...amming/javascript/events/

[ Voor 18% gewijzigd door intermusic op 02-02-2006 22:33 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:36

crisp

Devver

Pixelated

intermusic schreef op donderdag 02 februari 2006 @ 22:30:
Misschien een dom probeersel maar,
Java:
1
document.getElementById("divid").event.x

werkt ook niet.
Een event is een object dat doorgegeven wordt aan een event-handler. In IE is het event een global object (window.event), in echte browsers wordt het als parameter doorgegeven aan de handler - bekijk mijn voorbeeld nog maar eens goed...

Intentionally left blank


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Topicstarter
frickY schreef op donderdag 02 februari 2006 @ 21:58:
Je weet dat je ook kunt afvangen hoever een pagina is gescrollt? Als je de exacte positie van je DIV weet, welke je volgens mij ook kunt bepalen met javascript, kun je dat bij elkaar optellen.
Dat is het antwoord!
Gewoon het aantal gescrollde pixels optellen bij het aantal wat uit de y positie komt:

Java:
1
mousecoor(window.event.y) + document.body.scrollTop

Thanks you all!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:36

crisp

Devver

Pixelated

intermusic schreef op donderdag 02 februari 2006 @ 22:44:
[...]


Dat is het antwoord!
Gewoon het aantal gescrollde pixels optellen bij het aantal wat uit de y positie komt:

Java:
1
mousecoor(window.event.y) + document.body.scrollTop

Thanks you all!
only in IE... :/

Intentionally left blank


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

intermusic schreef op donderdag 02 februari 2006 @ 22:44:
[...]


Dat is het antwoord!
Gewoon het aantal gescrollde pixels optellen bij het aantal wat uit de y positie komt:

Java:
1
mousecoor(window.event.y) + document.body.scrollTop

Thanks you all!
Kijk nou eens goed naar het voorbeeld van crisp.... Hoe meer werkend (lees: crossbrowser) wil je het krijgen :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
crisp schreef op donderdag 02 februari 2006 @ 21:58:
JavaScript:
1
2
3
4
5
6
7
8
9
document.getElementById('divid').onmousemove = handler;

function handler(e)
{
    e = e || window.event;

    var mousex = e.layerX || e.x || e.offsetX;
    var mousey = e.layerY || e.y || e.offsetY;
}

works for me...
Ik had gedacht dat dat mis zou gaan als je met de muis helemaal links of helemaal boven zou komen , omdat dan x of y dan 0 zou worden. Maar wat blijkt: de linker bovenhoek is 1:1, niet 0:0. Wel vreemd eigenlijk.

| Toen / Nu

Pagina: 1