02. april 2005 - 23:07Der er
8 kommentarer og 1 løsning
Sende objekt videre i funktion
Jeg har en div, med koden: <div onmouseout="mouseout(this)"> Jeg brugte først koden:
function mouseOut(obj) { obj.style.backgroundColor = "#4682B4"; obj.style.color = "white"; obj.childNodes[0].style.color = "white"; } Og det virkede fint. Nu ønskede jeg så i mellem tiden et delay, så prøvede følgende:
function mouseOut(obj) { timeout = setTimeout("funcOut("+obj+")", 2000); }
Grunden til fejlen er, at en tekst i en timeout først fortolkes, når tiden er udløbet, og indtil da er det bare en tekststreng ...
-- og for at skabe en tekststreng er javascript-fortolkeren så venlig at tænke: "Argh, man da ikke konkatenere en tekststreng med et objekt, så jeg må hellere kalde objektets .toSting()-metode, så konkateneringen kan ske" !-)
-- så løsningen er at opbevare objektet i en global variabel imens:
var outObj = null; function mouseOut(obj) { outObj = obj; timeout = setTimeout("funcOut()", 2000); }
OleBole du er for sej! :o) Smid et svar! PS: Sidder du og keder dig sådan sent ud på aftenen, så du bliver nød til at sidde og "skrive" lidt med dig selv! :o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.