Avatar billede Slettet bruger
17. juni 2009 - 17:08 Der er 8 kommentarer og
1 løsning

Eksternt JS virker ikke

Hej eksperter,

Jeg er ikke voldsomt trænet i JS, så fejlen er nok ganske enkel. Anyway, her er min HTML-del (index.html):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
    <head>
        <title>OVRKLL - Maps</title>
        <link rel="shortcut icon" href="icon.ico">
        <link rel="stylesheet" type="text/css" href="global.css">
        <link rel="stylesheet" type="text/css" href="maps.css">
        <script type="text/javascript" src="global.js"></script>
    </head>
    <body>
        <div id="contact" onmouseover="Contact_Show()" onmouseout="Contact_Hide()">
            <h1>Contact</h1>
            <div>
            </div>
        </div>
    </body>

</html>

Og min JS-del (global.js):

// Contact
var Contact_Fade;
function Contact_Show()
{
    alert("TEST!");
    clearInterval(Contact_Fade);
    Contact_Fade = setInterval("Contact_FadeIn()", 20);
}
function Contact_Hide()
{
    clearInterval(Contact_Fade);
    Contact_Fade = setInterval("Contact_FadeOut()", 20);
}
function Contact_FadeIn()
{
    var reference = document.getElementById("contact").style;
    if (+reference.opacity < .97)
    {
        reference.opacity = +reference.opacity + .03;
        return;
    }
    clearInterval(Contact_Fade);
    +reference.opacity = 1;
}
function Contact_FadeOut()
{
    var reference = document.getElementById("contact").style;
    if (+reference.opacity > .26)
    {
        reference.opacity = +reference.opacity - .01;
        return;
    }
    clearInterval(Contact_Fade);
    +reference.opacity = .25;
}

onmouseover virker ikke - hvorfor?
Avatar billede Slettet bruger
17. juni 2009 - 17:22 #1
Umidbart tror jeg ikke du kan gøre dette:
    var reference = document.getElementById("contact").style;
    if (+reference.opacity < .97)
Men i stedet bør gøre sådan:
    var reference = document.getElementById("contact");
    if (+reference.style.opacity < .97)
Men er dog ikke sikker.
Avatar billede roenving Novice
17. juni 2009 - 17:25 #2
Vel fordi clearInterval(Contact_Fade); køres hver eneste gang ...
Avatar billede Slettet bruger
17. juni 2009 - 17:31 #3
#1
Scriptet virker - jeg har testet tilsvarende andetsteds.

#2
Prøv lige at læse scriptet igennem igen :)

Den manglende popup bevidner endvidere, at scriptet slet ikke kaldes. Dét er problemet.
Avatar billede erikjacobsen Ekspert
17. juni 2009 - 18:34 #4
Du skal nok fjerne plusser i de to linier, der ligner

      reference.opacity = 1;

...det script har da aldrig virket...?
Avatar billede erikjacobsen Ekspert
17. juni 2009 - 18:35 #5
Ja, altså plusserne i linierne der ligner

  +reference.opacity = 1;
Avatar billede Slettet bruger
17. juni 2009 - 21:02 #6
#4+5
Nej, jeg har jo sagt, at selve koden fungerer (er testet) - den bliver bare ikke kaldt.
Avatar billede Slettet bruger
17. juni 2009 - 21:44 #7
Nej, der tog jeg fejl - jeg må have sløv i det, da jeg tilrettede koden. Endvidere bevirkede fixet, at alert'en virker (altså at scriptet nu kaldes, mens det før blev ignoreret helt).
kimsey og roenving kan jo smide et par svar, hvis I vil have point.
Avatar billede Slettet bruger
17. juni 2009 - 21:48 #8
Grunden til at koden aldrig bliver kaldt er netop plusserne.
Prøv selv følgende kode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
    <head>
        <title>OVRKLL - Maps</title>
        <link rel="shortcut icon" href="icon.ico">
        <link rel="stylesheet" type="text/css" href="global.css">
        <link rel="stylesheet" type="text/css" href="maps.css">
        <script type="text/javascript">
            // Contact
            var Contact_Fade;
            function alert_me()
            {
            alert("Alert!");
            }
            function Contact_Show()
            {
                clearInterval(Contact_Fade);
                Contact_Fade = setInterval("Contact_FadeIn()", 20);
            }
            function Contact_Hide()
            {
                clearInterval(Contact_Fade);
                Contact_Fade = setInterval("Contact_FadeOut()", 20);
            }

            function Contact_FadeIn()
            {
                var reference = document.getElementById("contact").style;
                if (reference.opacity < .97)
                {
                    reference.opacity = +reference.opacity + .03;
                    return;
                }
                clearInterval(Contact_Fade);
                reference.opacity = 1;
            }
            function Contact_FadeOut()
            {
                var reference = document.getElementById("contact").style;
                if (reference.opacity > .26)
                {
                    reference.opacity = +reference.opacity - .01;
                    return;
                }
                clearInterval(Contact_Fade);
                reference.opacity = .25;
            }
        </script>
    </head>
    <body>
        <div id="contact">
            <a href="java script:void(0);" onmouseover="Contact_Show()" onmouseout="Contact_Hide()"><h1>Contact</h1></a>
            <div>
            </div>
        </div>
    </body>

</html>
Avatar billede Slettet bruger
17. juni 2009 - 21:49 #9
Du opdagede det selv før jeg nåede at svare.
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