Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Javascript: pop-up menu vertragen.

Jurriaan R
3 antwoorden
  • Ik gebruik op m'n site een menu die door middel van een layer uitklapt. Werkt best aardig, maar ik zou er graag een kleine vertraging inbouwen zodat het wat makkelijker is om naar het uitgeklapte menu te gaan zonder dat deze direct verdwijnt als je even met je muis van de cel afgaat.

    De code waar het waarschijnlijk fout gaat:
    [code:1:aaf6bdc58b]
    <script language="JavaScript">
    <!–

    function showmenu(elmnt)
    {
    document.all(elmnt).style.visibility="visible"
    }

    function hidemenu(elmnt)
    {
    document.all(elmnt).style.visibility="hidden"
    }

    function hidemenupresentatie() {
    document.all('presentatie').style.visibility="hidden"
    }

    //–>
    </script>
    <table>
    <td onmouseover="showmenu('Presentatie')" onmouseout="setTimeout("hidemenupresentatie()",1000)">voorbeeld</td>
    </table>
    [/code:1:aaf6bdc58b]

    De functie 'showmenu' laat dus het submenu verschijnen. De functie 'hidemenu' laat dit menu weer gebruiken. Op een site ergens had ik gevonden dat de setTimeout functie niet toestaat dat er een parameter wordt meegegeven bij de functie die je aanroept. Dat heb ik dus opgelost door een aparte functie te maken (hidemenupresentatie).

    De code van hidemenupresentatie werkt prima, want ik heb ook een aparte link gemaakt inde pagina die dezelfde functie aanroept en dat gaat goed. Ik verwacht dus dat er een foutje zit in de setTimeout functie.

    Kan iemand me hiermee helpen?

    Zie voor een completer code en een beeld van hoe het werkt deze pagina: http://www.motorchoice.nl/test/mainpage.htm

    bvd, Elja
  • zoek de verschillen :)

    [b:3a3bb0b634]fout[/b:3a3bb0b634]
    <td onmouseover="showmenu('Presentatie')" onmouseout="setTimeout("hidemenupresentatie()",1000)">
    [b:3a3bb0b634]goed[/b:3a3bb0b634]
    <td onmouseover="showmenu('Presentatie')" onmouseout="setTimeout('hidemenupresentatie()',1000)">

    btw. je kan aan een setTimeout best variabelen meegeven alleen zal je de scope van deze vars goed in de gaten moeten houden. Op het moment dat de functie in de timeout wordt uitgevoerd wordt de expressie namelijk pas geparsed en als de variabele dan niet bekend is dan krijg je inderdaad niet het verwachte resultaat.
    Maar je kan bijvoorbeeld vaak ook iets als onderstaande doen:

    setTimeout("functie('" + var + "')", 1000)
  • Thx Annie, dat helpt inderdaad :)
    Maarhuh, nu zit ik eigenlijk met het probleem dat ik zo niet het goede effect krijg. Het submenu verdwijnt nu altijd, ook als ik het submenu 'inga' om daar een link te klikken. :(

    Heb je (of iemand anders) misschien nog een andere manier waarop ik er een kleine vertraging in kan bouwen, oid.. ?

    Elja

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.