javascript-setTimeout probleem

Pagina: 1
Acties:

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 12:52
Ik heb voor mn nieuwe site een menuutje gemaakt, wat onmouseover tevoorschijn komt. Bij onmouseout wordt er een functie aangeroepen, waarna het menuutje na een seconde of wat weer verdwijnt, dit doe ik als volgt:

code:
1
2
3
4
5
6
7
8
    function hideLayer(layername)
        {
                document.getElementById(layername).style.visibility = 'hidden'
        }
    function timeoutLayer(layername)
        {
                window.setTimeout("hideLayer("+layername+")", 1000);
        }

Dit wordt aangeroepen vanuit de html-file als volgt:
code:
1
2
onmouseover='showLayer"menu2");'  
onmouseout='timeoutLayer("menu2");'

Maar dit werkt niet. Ik krijg een javascript-error met "object vereist" bij de functie hideLayer (de functie die door de timeoutLayer functie wordt aangeroepen. Hoe los ik dit op? ALs ik de functie hideLayer direct aanroep, zonder timeout, werkt het dus wel.

Verwijderd

Maak een variabele die je oTimeout noemt bovenin je script.
OnmouseOut roep je dan: "hideTable() en "clearTimeout(oTimeout);" aan, onMouseover roep je: "oTimeout = setTimeout('makeTableVisible()', 1500);" aan. Bij mij werkt dit op deze manier, waarschijnlijk doe ik het zo ook niet 100% perfect, maar het werkt.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

JavaScript:
1
2
3
function timeoutLayer(layername) {
  window.setTimeout('hideLayer(\''+layername+'\')', 1000);
}

Je moet een string meegeven, geen object, dus extra quotes. Wees ook consequent in het gebruik van enkele en dubbele quotes.

Intentionally left blank


  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 12:52
thx, nu werkt het.