Avatar billede wosylus Nybegynder
04. april 2005 - 11:30 Der er 5 kommentarer

Fade-funktion fader ikke ud!

På min side benytter jeg en fade-funktion i menuen, som virker helt perfekt i Internet Explorer, men i Firefox fader farven ikke ud igen, men bliver der permanent. Scriptet har jeg ikke selv skrevet, så jeg håber på nogen kan hjælpe. Se på www.snigeren.dk hvordan det virker. Her er koden:

/* rev $ID: 2003-05-30T03:14:01 CEST tul $ */

var menuFadeListInGreen = new Array();
var menuFadingInGreen = false;

var menuFadeListOutGreen = new Array();
var menuFadingOutGreen = false;

function menuCleanGreen(obj) {
    var tmp;

    var newFadeListGreen = new Array();
    while(tmp = menuFadeListInGreen.pop())
    if(obj != tmp)
            newFadeListGreen.push(tmp);

    menuFadeListInGreen = newFadeListGreen;


    newFadeListGreen = new Array();
    while(tmp = menuFadeListOutGreen.pop())
    if(obj != tmp)
            newFadeListGreen.push(tmp);

    menuFadeListOutGreen = newFadeListGreen;
}

function fadeInGreen(obj) {
    menuCleanGreen(obj);
    obj.style.cursor = 'hand';
    obj.style.color = 'white';
    obj.style.backgroundColor = '#0c802f';
    menuFadeListInGreen.push(obj);
    if(!menuFadingInGreen)
    menuFadeInGreen();
}

function fadeOutGreen(obj) {
    menuCleanGreen(obj);
//    obj.style.backgroundColor = '#0c802f';
    menuFadeListOutGreen.push(obj);
    if(!menuFadingOutGreen)
    menuFadeOutGreen();
}
function menuFadeOutGreen() {
    var newFadeListOutGreen = new Array();
    var obj;
    while(obj = menuFadeListOutGreen.pop()) {
    newFadeListOutGreen.push(obj);
        switch(obj.style.backgroundColor) {
        case '#0c802f':
        obj.style.backgroundColor = '#0e9638';
            obj.style.color = 'black';
        break;
        case '#0e9638':
        obj.style.backgroundColor = '#0eb240';
            obj.style.color = 'black';
        break;
        case '#0eb240':
        obj.style.backgroundColor = '#19cd50';
            obj.style.color = 'black';
        break;
        case '#19cd50':
        obj.style.backgroundColor = '#32dc66';
            obj.style.color = 'black';
        break;
        case '#32dc66':
        obj.style.backgroundColor = '#ffff99';
            obj.style.color = 'black';
        break;
        default:
        newFadeListOutGreen.pop();
    }
    }
    menuFadeListOutGreen = newFadeListOutGreen;
    if(menuFadeListOutGreen.length) {
    setTimeout('menuFadeOutGreen()', 20);
    menuFadingOutGreen = true;
    }
    else
    menuFadingOutGreen = false;
}

function menuFadeInGreen() {
    var newFadeListInGreen = new Array();
    var obj;
    while(obj = menuFadeListInGreen.pop()) {
    newFadeListInGreen.push(obj);
        switch(obj.style.backgroundColor) {
        case '#c2d2c2':
        obj.style.backgroundColor = '#b2c2b2';
            obj.style.color = 'black';
        break;
        case '#b2c2b2':
        obj.style.backgroundColor = '#a2b2a2';
            obj.style.color = 'white';
        break;
        case '#a2b2a2':
        obj.style.backgroundColor = '#a2ffcc';
            obj.style.color = 'white';
        break;
        case '#a2ffcc':
        obj.style.backgroundColor = '#6bff9b';
            obj.style.color = 'white';
        break;
        case '#6bff9b':
        obj.style.backgroundColor = '#90ff5a';
            obj.style.color = 'white';
        break;
        default:
        newFadeListInGreen.pop();
    }
    }
    menuFadeListInGreen = newFadeListInGreen;
    if(menuFadeListInGreen.length) {
    setTimeout('menuFadeInGreen()', 20);
    menuFadingInGreen = true;
    }
    else
    menuFadingInGreen = false;
}
Avatar billede barklund Nybegynder
04. april 2005 - 11:36 #1
Hvordan kalder du den? Kalder du den direkte med et document.fooid eller er det med document.getElementById("fooid") - for du skal bruge det sidste.

--
Morten Barklund
Avatar billede wosylus Nybegynder
04. april 2005 - 12:20 #2
Kalder den således:

onmouseover=fadeInGreen(this); onmouseout=fadeOutGreen(this);
Avatar billede barklund Nybegynder
04. april 2005 - 12:27 #3
Derudover er det absolut ikke noget særligt køn javascript - men jeg kan ikke lige umiddelbart se, hvorfor det ikke skulle virke i FF.

Dog, har du quotes dine events og ikke som ovenover? Altså skrevet:

onmouseover="fadeInGreen(this);" onmouseout="fadeOutGreen(this);"

Har du smidt en bunke alert's ind for at se, hvor langt den kommer?

--
Morten Barklund
Avatar billede wosylus Nybegynder
04. april 2005 - 12:38 #4
Hehe... Nej, det er det nok ikke.. Er ikke lige så skarp til det.

Nej, det var jeg ikke klar over man kunne
Avatar billede barklund Nybegynder
04. april 2005 - 12:40 #5
alert("besked") laver en popupboks med beskeden i - så kan du selv teste hvor langt scriptet når - altså bliver elementet puttet på dit array, kalder den fade-funktionen første gang, og så videre...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester