Avatar billede mamu Nybegynder
07. august 2004 - 18:02 Der er 11 kommentarer og
1 løsning

Stop function

Hej X'perter

Jeg har lavet en menu, med en hover effekt, som gør at når musen føres hen over et link farves teksten, og når den flyttes væk fader farven langsomt væk igen.

Mit problem er at føres musen f.eks. to gange hurtigt over det samme link, er fadefunktionen stadig igang med at fade fra det første besøg, og det bliver derfor noget kluder når man sætter den igang igen inden den er færdig.

Jeg havde umiddelbart tænkt at man kunne stoppe funktionen, i samme øjeblik musen køres ind over linket, og så kunne den frit starte forfra, men jeg kender ikke kommandoen.

Hvordan klarer jeg den??
Avatar billede skovenborg Nybegynder
07. august 2004 - 18:21 #1
har du ikke en link man kunne se eller koden?
Avatar billede mamu Nybegynder
07. august 2004 - 18:26 #2
Her er koden til fade-effekten:

var startcolor=new Array()     // Link color - fading to black
startcolor[0]=251;
startcolor[1]=96;
startcolor[2]=2;

var newcolor=new Array
newcolor=startcolor;

var fadespeed=1000;            // Fade speed in milliseconds

var colchange=new Array()
colchange[0]=startcolor[0]/20;
colchange[1]=startcolor[1]/20;
colchange[2]=startcolor[2]/20;

var frame=20;

function fade(elm){
   
if(elm.parentNode.style.backgroundColor=="#5183b5"){
    if(frame>0) {
        for (i=0; i<3; i++){
        newcolor[i]=newcolor[i]-colchange[i];
        }
        elm.style.color="rgb("+Math.floor(newcolor[0])+","+Math.floor(newcolor[1])+","+Math.floor(newcolor[2])+")";
        frame--;
        newelm=elm
        setTimeout("fade(newelm)",fadespeed/20);
    }
   
    else{
    elm.style.color="rgb(0,0,0)";
    frame=20;
    startcolor[0]=251;
    startcolor[1]=96;
    startcolor[2]=2;
   
        for (i=0; i<3; i++){
        newcolor[i]=startcolor[i];
        }
       
    }
}   
}
Avatar billede skovenborg Nybegynder
07. august 2004 - 18:35 #3
du har vel ikke en lille test-side hvor problemmet opstår. For mig at se er der et par flere ting som går galt, men jeg tror jeg har sat det lidt forkert op.
Avatar billede mamu Nybegynder
07. august 2004 - 18:42 #4
Jeg kan godt se det kommer lidt ude af en sammenhæng, men jeg kan desværre ikke umidelbart lægge det op på en testside.
Avatar billede skovenborg Nybegynder
07. august 2004 - 18:43 #5
du er også bare velkommen til lige at vise den html-kode du bruger når du kalder funktionen. Altså den del hvor du har menuen.
Avatar billede mamu Nybegynder
07. august 2004 - 18:54 #6
Den er her - ellers har jeg loaded det hele op på www.ma-mu.dk nu.

<body>
    <table height="100%" width="100%" cellpadding="0" cellspacing="0">
    <tr align="center" valign="middle">
        <td width="20%">
            <a href="main.asp" name="home" onMouseover="hoverin(this)" onMouseout="fade(home)" onclick="choice(home)">Home</a>
        </td>
        <td width="20%">
            <a href="content/biografi.htm" name="bio" onMouseover="hoverin(this)" onMouseout="fade(bio)" onclick="choice(bio)">Biografi</a>
        </td>
        <td width="20%">
            <a href="content/cv.htm" name="cv" onMouseover="hoverin(this)" onMouseout="fade(cv)" onclick="choice(cv)">Curriculum Vitae</a>
        </td>
        <td width="20%">
            <a href="content/billeder.htm" name="pic" onMouseover="hoverin(this)" onMouseout="fade(pic)" onclick="choice(pic)">Billeder</a>
        </td>
        <td width="20%">
            <a href="content/klatring.htm" name="and" onMouseover="hoverin(this)" onMouseout="fade(and)" onclick="choice(and)">Klatring</a>
        </td>
    </tr>
    </table>
</body>
Avatar billede skovenborg Nybegynder
08. august 2004 - 00:37 #7
prøv:
var startcolor = [251,96,2];
var fadespeed=1000;
var steps = 20;
var colchange=new Array()

colchange[0]=startcolor[0]/steps;
colchange[1]=startcolor[1]/steps;
colchange[2]=startcolor[2]/steps;

var link_arr = new Array();
var timer = new Array();

function fade(elm) {
    if (link_arr[elm.name][4] > 0) {
            for (i=0;i<3;i++) {
                link_arr[elm.name][i] -= colchange[i];
            }
            --link_arr[elm.name][4];
            elm.style.color = "rgb("+Math.max(0,Math.floor(link_arr[elm.name][0]))+","+Math.max(0,Math.floor(link_arr[elm.name][1]))+","+Math.max(0,Math.floor(link_arr[elm.name][2]))+")";
    }
    else {
          elm.style.color = "#000000";
          //clearInterval(link_arr[elm.name][3]);
          clearInterval(timer[elm.name]);

    }

}
// elm.parentNode.style.backgroundColor=="#5183b5"
function hoverin(elm) {
    if(true){
            elm.style.color='#fb6002';
                link_arr[elm.name] = new Array(startcolor[0],startcolor[1],startcolor[2]);
                link_arr[elm.name][4] = steps;
                window.status = timer[elm.name];
                if (timer[elm.name]) {clearInterval(timer[elm.name]);}
            //if (link_arr[elm.name][3]) {clearInterval(link_arr[elm.name][3]);}

    }
}
function hoverout(elm) {
    e=elm;
    timer[elm.name] = setInterval('fade(e)',fadespeed/steps);
    //if (!link_arr[elm.name][3]) {link_arr[elm.name][3] = setInterval('fade(e)',fadespeed/steps);}
}


<body>
    <table height="100%" width="100%" cellpadding="0" cellspacing="0">
    <tr align="center" valign="middle">

        <td width="20%">
            <a href="main.asp" name="home" onMouseover="hoverin(this)" onmouseout="hoverout(this)" onclick="choice(home)">Home</a>
        </td>
        <td width="20%">
            <a href="content/biografi.htm" name="bio" onMouseover="hoverin(this)" onMouseout="hoverout(this)" onclick="choice(bio)">Biografi</a>
        </td>
        <td width="20%">
            <a href="content/cv.htm" name="cv" onMouseover="hoverin(this)" onMouseout="hoverout(this)" onclick="choice(cv)">Curriculum Vitae</a>
        </td>

        <td width="20%">
            <a href="content/billeder.htm" name="pic" onMouseover="hoverin(this)" onMouseout="hoverout(this)" onclick="choice(pic)">Billeder</a>
        </td>
        <td width="20%">
            <a href="content/klatring.htm" name="and" onMouseover="hoverin(this)" onMouseout="hoverout(this)" onclick="choice(and)">Klatring</a>
        </td>
    </tr>
    </table>
</body>

Virker også i mozilla.
Avatar billede mamu Nybegynder
08. august 2004 - 08:54 #8
Tak for det, jeg kan desværre først tjekke om det virker om en lille uges tid...
Avatar billede mamu Nybegynder
11. august 2004 - 18:37 #9
Nu kan menuen slet ikke vises...
Avatar billede mamu Nybegynder
11. august 2004 - 18:43 #10
Ups... min fejl, nu virker det, der er bare ét lille problem: Køres musen først over ét link, og herefter over ét andet, så stopper fadningen af det første link (idet det jo er den samme funktion som kaldes med de forskellige link). Dette kunne naturligvis ordnes vha. 5 forskellige funktioner, men er der ikke en smartere måde??
Avatar billede mamu Nybegynder
22. august 2004 - 15:27 #11
Det bliver vist i et nyt spørgsmål senere - pop et svar skovenborg så får du dine points!
Avatar billede skovenborg Nybegynder
22. august 2004 - 18:31 #12
okay så :-)
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