Ik ben bezig met een uitklapmenu te maken, die ik met een eigen javascriptje toon (display = block) als er op een hoofdmenu item geklikt wordt.
Code die ik gebruik:
Als ik nu op een hoofdmenu item klik wordt het divje netjes getoond. Maar klik ik op hetzelfde hoofdmenu item, maar dan een aantal milimeters opzij, wordt ook het submenu een aantal milimeters verschoven! Dit komt omdat ik alleen de coordinaten binnenhaal van de positie van de cursor als er geklikt wordt, en niet de coordinaten van het hoofdmenu item.
Ik wil dus graag, als er op een hoofdmenu item geklikt wordt, de coordinaten (top en left) binnenhalen van het hoofdmenu item (in dit geval een div met een id) waarop ik klik. In dit geval wordt het uitklapmenu wel netjes geplaatst waar ik wil, en komt hij altijd op dezelfde plek, ongeacht op welke plek in een hoofdmenu item ik ook klik. Wie weet hoe ik dit het beste kan doen??
Code die ik gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| <html>
<head>
<script>
function showDiv(e,menunaam)
{
var posx = 0;
var posy = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY)
{
left = e.pageX;
bottom = e.pageY;
}
else if (e.clientX || e.clientY)
{
left = e.clientX + document.body.scrollLeft;
bottom = e.clientY + document.body.scrollTop;
}
left = left - 15;
bottom = bottom + 19 ;
element = document.getElementById("menu" + menunaam);
element.style.left = left + "px";
element.style.top = bottom + "px";
element.style.display = 'block';
}
</script>
</head>
<body>
<div id="een"><a href="#" class="hoofdmenu" onclick="showDiv(event,'Over ons');">Hoofdmenu item 1</a></div>
<div id="twee"><a href="#" class="hoofdmenu" onclick="showDiv(event,'Over ons');">Hoofdmenu item 2</a></div>
<div id="drie"><a href="#" class="hoofdmenu" onclick="showDiv(event,'Over ons');">Hoofdmenu item 3</a></div>
<div id="vier"><a href="#" class="hoofdmenu" onclick="showDiv(event,'Over ons');">Hoofdmenu item 4</a></div>
<div id="menuOver ons" style="z-index: 20; position: absolute; left:0; top:0; padding: 7px 15px; display: none; background: #fff;">
Subitem 1<br>
Subitem 2<br>
Subitem 3<br>
</div>
</body>
</html> |
Als ik nu op een hoofdmenu item klik wordt het divje netjes getoond. Maar klik ik op hetzelfde hoofdmenu item, maar dan een aantal milimeters opzij, wordt ook het submenu een aantal milimeters verschoven! Dit komt omdat ik alleen de coordinaten binnenhaal van de positie van de cursor als er geklikt wordt, en niet de coordinaten van het hoofdmenu item.
Ik wil dus graag, als er op een hoofdmenu item geklikt wordt, de coordinaten (top en left) binnenhalen van het hoofdmenu item (in dit geval een div met een id) waarop ik klik. In dit geval wordt het uitklapmenu wel netjes geplaatst waar ik wil, en komt hij altijd op dezelfde plek, ongeacht op welke plek in een hoofdmenu item ik ook klik. Wie weet hoe ik dit het beste kan doen??