Toon posts:

[JS] OnMouseOut en div werkt niet lekker.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Jaja, ik heb ook zo'n dropdown menuutje.

Bij OnMouseOver komt er een mooi menuutje naar beneden en bij OnMouseOut gaat deze weer weg.
Alles werkt perfect als er niets in de div's staat.
Nou heb ik een paar <img> in de div (submenu) gezet en nou klapt het submenu vrijwel gelijk in als ik over een <img> ga, maar nog op de layer sta met mijn muispijltje?
Het moet natuurlijk pas inklappen als ik buiten de layer kom.

Zie ik iets stoms over het hoofd?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

Erh.. Er zit iets fout in je code; meer kan ik er op dit moment niet uithalen. Kan je misschien een stukje relevante code hier neerzetten?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
voor degene die code willen zien:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
&lt;?php

?&gt;

&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;/title&gt;

    &lt;STYLE TYPE=&quot;text/css&quot;&gt;
    &lt;!--
    @import url(stylesheet.css);
    --&gt;
    &lt;/STYLE&gt;

&lt;script&gt;

if (document.layers)
{
    visible = 'show';
    hidden = 'hide';
}
else if (document.all)
{
    visible = 'visible';
    hidden = 'hidden';
}

function Menu(Div1, Div2)
{
    if (document.layers)
    {
        Hide = document.layers[Div1];
        Show = document.layers[Div2];
    }
    else if (document.all)
    {
        Hide = document.all(Div1).style;
        Show = document.all(Div2).style;
    }
        
    setTimeout('Hide.visibility = hidden', 500);
    Show.visibility = visible;
}

&lt;/script&gt;

&lt;/head&gt;

&lt;body bgcolor=&quot;black&quot;&gt;

&lt;div id=&quot;top&quot; class=&quot;top&quot;&gt;
&lt;/div&gt;

&lt;div id=&quot;topHome&quot; class=&quot;topHome&quot; onMouseover=&quot;Menu('topHome', 'topHomeMn'); return false;&quot;&gt;
    &lt;img src=&quot;pics/bthome.gif&quot; name=&quot;bthome&quot; border=&quot;0&quot;&gt;
&lt;/div&gt;

// **** hier zit het probleem..

&lt;div id=&quot;topHomeMn&quot; class=&quot;topHomeMn&quot; onMouseout=&quot;Menu('topHomeMn', 'topHome'); return false;&quot;&gt;
    &lt;img src=&quot;pics/bthome-ov.gif&quot; name=&quot;bthome-ov&quot; border=&quot;0&quot;&gt;&lt;br&gt;
    &lt;img src=&quot;pics/btregio.gif&quot; name=&quot;btregio&quot; border=&quot;0&quot;&gt;&lt;br&gt;
    &lt;img src=&quot;pics/btklassen.gif&quot; name=&quot;btklassen&quot; border=&quot;0&quot;&gt;&lt;br&gt;
    &lt;img src=&quot;pics/btarchief.gif&quot; name=&quot;btarchief&quot; border=&quot;0&quot;&gt;
&lt;/div&gt;

&lt;div id=&quot;topRegio&quot; class=&quot;topRegio&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;topKlassen&quot; class=&quot;topKlassen&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;topClubinfo&quot; class=&quot;topClubinfo&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;topArchief&quot; class=&quot;topArchief&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;topLinks&quot; class=&quot;topLinks&quot;&gt;&lt;/div&gt;

&lt;div id=&quot;bottom&quot; class=&quot;bottom&quot;&gt;
&lt;?php include(&quot;content/klassen.php&quot;); ?&gt;
&lt;/div&gt;

&lt;div id=&quot;banner&quot; class=&quot;banner&quot;&gt;&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:07

crisp

Devver

Pixelated

Een vertraging inbouwen bij het wegklappen, en die cancellen als je je toch nog boven de DIV bevind (onMouseOver wordt weer getriggered).

Intentionally left blank


Verwijderd

Topicstarter
Hey het werkt idd, gewoon een OnMouseOver toegevoegd.
code:
1
2
3
&lt;div id=&quot;topHomeMn&quot; class=&quot;topHomeMn&quot;
onMouseover=&quot;Menu('topHome', 'topHomeMn'); return false;&quot;
onMouseout=&quot;Menu('topHomeMn', 'topHome'); return false;&quot;&gt;

Maar dit is een beetje fout en belastend toch?
Bij elke beweging wordt de mouseover getrickerd.
Kan dit niet beter?
Is het niet gewoon een stom HTML foutje ofzo...
en zo niet, wat is de oorzaak van dit probleem, dat zou ik ook graag willen weten. :)

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 31-08 12:55
Probleem is dat zodra de muis op iets IN de layer staat, hij niet meer op de layer ZELF staat! De layer krijgt dan een onmouseout en gaat weer weg dus...

Vertraging is een optie zoals hierboven gezegd. Of events doorgeven van de objecten in de layer. Of checken met muiscoordinaten of de muis nog op het menu zit...

Er zijn dus zeker opties, maar ze zijn wat lastiger te realiseren.

Suc6

Verwijderd

Topicstarter
Op dinsdag 23 juli 2002 16:35 schreef Morrar het volgende:
Probleem is dat zodra de muis op iets IN de layer staat, hij niet meer op de layer ZELF staat! De layer krijgt dan een onmouseout en gaat weer weg dus...

Vertraging is een optie zoals hierboven gezegd. Of events doorgeven van de objecten in de layer. Of checken met muiscoordinaten of de muis nog op het menu zit...

Er zijn dus zeker opties, maar ze zijn wat lastiger te realiseren.

Suc6
Hoe komt het dan dat de OnMouseOver toch werkt ook al sta ik op een plaatje?
Is het een soort signaalverwerking, eerst ziet IE de <IMG> (en hier geeft die een OnMouseOut) en dan de <DIV> (en hier geeft die een OnMouseOver).

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Dt document.layers gebeuren kun je er wel uit halen.. Ten eerste werken de event toch niet als je ze in de tag definieert. Ten tweede is dat hide/hidden verhaal onzin. visibility kun je in alle browsers (ja zelfs NS4) zetten met "visible" en "hidden".

Misschien kun je je beter op wat modernere dhtml richten middels DOM (getElementById() e.d.).

Verwijderd

Hey...

Ben sinds kort ook bezig met layers, misschien kun je gewoon dit proberen, bij mij werkt het!!!
<div id="i2"
onmouseover="javascript:showlayer1(&#39;w&#39;);showlayer(&#39;i2&#39;);"
onmouseout="javascript:hidelayer(&#39;i2&#39;);hidelayer1(&#39;w&#39;);">

je moet ze dan wel op treu zetten natuurlijk!!!

  • Willem
  • Registratie: Februari 2001
  • Laatst online: 23:01
ja. zou ik ook doen.

Als je niet weet waar je het over hebt, reageer dan niet in de thread. :/

Motor (of auto) onderhoud bijhouden


Verwijderd

willem169 schreef op 17 September 2002 @ 09:29:
ja. zou ik ook doen.

Als je niet weet waar je het over hebt, reageer dan niet in de thread. :/
en tegen wie heb jij het? O-)
Pagina: 1