12. februar 2005 - 21:11Der er
21 kommentarer og 1 løsning
Fading og generelt spm til JavaScript
Hey, jeg vil til og igang med noget DHTML og kender i forvejen til HTML og CSS. Så er gået igang med JavaScript :-P.. Og lavet følgende funktion(er) til at fade et element -->
function clean(elm) //renser elementet med et interval { interval=setInterval("makeclean(elm)",10) }
function foggy(elm) //sløre elementet til 10 opacity { clearInterval(interval) 'elm'.filters.alpha.opacity=10 }
function makeclean(elm) //renser elementet til 100 opacity { if ('elm'.filters.alpha.opacity<100) { 'elm'.filters.alpha.opacity+=5 } else if (window.interval) { clearInterval(interval) } }
Kan sagtens få scriptet til at virke hvis jeg indsætter et FAST og KENDT navn på f.eks et billede... Men nu har jeg prøvet at gøre funktionen mere fleksibel så man kan bruge det på flere elementer med variablen elm.. Men det virker ik rigtigt.. Tror min defination af variablen er forkert!!
-- når det er en parameter er den automatisk deklareret som lokal variabel, så i dette tilfælde vil det direkte være en fejl at forsøge at deklarere den !-)
>>jacob_m
-- og så vil ovenstående kun virke i IE, de andre vil endda lave en javascript-fejl, da filters ikke findes på elementer, som olebole opfriskede mig med forleden ...
-- så når du skal lave den cross-browser, skal du undersøge om det er en IE, f.eks. ved at teste om elm.filters er noget !o]
function makefoggy(elm) { //elm = 'box'; var get = document.getElementById(elm); if (get.filters.alpha.opacity>40) { get.filters.alpha.opacity-=5 } else if (window.interval) { clearInterval(interval) } }
var get = document.getElementById(elm); if (get.filters.alpha.opacity<100) { get.filters.alpha.opacity+=5 } else if (window.interval) { clearInterval(interval) } } --------------------------------
Nu virker det, NÆSTEN.. Min fejl er nu omkring linien
Hrm, så kommer den med fejl, som ifølge kilden er i if-linjen i funktionerne ...
Prøv at indsætte en linje, som alerter get.filters.alpha.opacity, hvis den er undefined eller laver en fejl, fjerner du properties indtil du har noget som giver [object] ...
-- iøvrigt er dit valg af variabelnavne risky, da det sagtens kan tænkes at give fejl på et tidspunkt at bruge hhv. 'get' og 'interval', så det ville jeg i hvert fald ændre !-)
-- og så definerer du ikke interval udenfor funktionerne, så den vil aldrig findes uden for de steder, du sætter dem ...
Jaer.. Men har sq fundet ud af det... Ved hjælp af lidt indspiration fra PHP (som jeg er mere hjemme i).. Kom til at tænkte på hvordan man "escaper" i PHP.. Og så stod denne løsning klar for mig:
intid=setInterval("makefoggy(\'"+elm+"\')",10);
Og det virker... Og foresten det der med at gøre indid "global", er en meget dårlig idé.. for så kan den ikke fade ned igen... Hvertfald ikke hvis man bruger det samme navn :P..
eller nej, du har nok ret.. for bliver den IKKE fade helt ud.. så går der koks i det..
Synes godt om
Ny brugerNybegynder
Din løsning...
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.