Avatar billede asger.friis Nybegynder
03. juni 2005 - 21:22 Der er 14 kommentarer og
1 løsning

hjælp til event-handlere

Hej.

Jeg har en side med nogle knapper, som refererer til til en anden fra. Disse knapper fungerer således at de er opdelt i tre kategorier (base, down, over). Og det bliver styret af javascript vha. onmouse.... funktionerne. Men nu kunne jeg godt tænke mig at over-knappen til den viste side kom frem, fx hvis man er på musikken.html så skal musikkens over-knap komme til syne, nøjagtig som når man fører musen hen over. Og mit problem er at jeg ikke ved hvordan jeg skal klare dette her er scriptet:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>
<meta name="Generator" content="Stone's WebWriter 4">
        <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
       
<!-- Minus AutoDato -->
        <title>menu</title>
        <csscriptdict>
            <script type="text/javascript"><!--

function changeImagesArray(array) {
    if (preloadFlag == true) {
        var d = document; var img;
        for (var i=0; i<array.length; i+=2) {
            img = null; var n = array[i];
            if (d.images) {img = d.images[n];}
            if (!img && d.getElementById) {img = d.getElementById(n);}
            if (img) {img.src = array[i+1];}
        }
    }
}
function changeImages() {
    changeImagesArray(changeImages.arguments);
}

var preloadFlag = true;

// --></script>
        </csactiondict>
    </head>

    <body bgcolor="#cc0000" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
        <table name="tabel" border="0" cellspacing="2" cellpadding="0" align="right" height="75">
                                                <tr height="75">
                                                    <td width="90" height="75"><a onmousedown="changeImages( /*CMP*/'Ensembler_base',/*URL*/'Knapper/Ensembler_down.gif');return true" onmouseup="changeImages( /*CMP*/'Ensembler_base',/*URL*/'Knapper/Ensembler_over.gif');return true" onmouseover="changeImages( /*CMP*/'Ensembler_base',/*URL*/'Knapper/Ensembler_over.gif');return true" onmouseout="changeImages( /*CMP*/'Ensembler_base',/*URL*/'Knapper/Ensembler_base.gif');return true" href="sider/ensembler.html" target="side"><img src="Knapper/Ensembler_base.gif" alt="" name="Ensembler_base" height="75" width="90" border="0"></a></td>
                                                    <td width="90" height="75"><a onmousedown="changeImages( /*CMP*/'Musikken_base',/*URL*/'Knapper/Musikken_down.gif');return true" onmouseup="changeImages( /*CMP*/'Musikken_base',/*URL*/'Knapper/Musikken_over.gif');return true" onmouseover="changeImages( /*CMP*/'Musikken_base',/*URL*/'Knapper/Musikken_over.gif');return true" onmouseout="changeImages( /*CMP*/'Musikken_base',/*URL*/'Knapper/Musikken_base.gif');return true" href="sider/musikken.html" target="side"><img src="Knapper/Musikken_base.gif" alt="" name="Musikken_base" height="75" width="90" border="0"></a></td>
                                                    <td width="90" height="75"><a onmousedown="changeImages( /*CMP*/'Referencer_base',/*URL*/'Knapper/Referencer_down.gif');return true" onmouseup="changeImages( /*CMP*/'Referencer_base',/*URL*/'Knapper/Referencer_over.gif');return true" onmouseover="changeImages( /*CMP*/'Referencer_base',/*URL*/'Knapper/Referencer_over.gif');return true" onmouseout="changeImages( /*CMP*/'Referencer_base',/*URL*/'Knapper/Referencer_base.gif');return true" href="sider/referencer.html" target="side"><img src="Knapper/Referencer_base.gif" alt="" name="Referencer_base" height="75" width="90" border="0"></a></td>
                                                    <td width="90" height="75"><a onmousedown="changeImages( /*CMP*/'Kontakt_base',/*URL*/'Knapper/Kontakt_down.gif');return true" onmouseup="changeImages( /*CMP*/'Kontakt_base',/*URL*/'Knapper/Kontakt_over.gif');return true" onmouseover="changeImages( /*CMP*/'Kontakt_base',/*URL*/'Knapper/Kontakt_over.gif');return true" onmouseout="changeImages( /*CMP*/'Kontakt_base',/*URL*/'Knapper/Kontakt_base.gif');return true" href="sider/kontakt.html" target="side"><img src="Knapper/Kontakt_base.gif" alt="" name="Kontakt_base" height="75" width="90" border="0"></a></td>
                                                </tr>               
        </table>
    </body>

</html>
Avatar billede asger.friis Nybegynder
03. juni 2005 - 21:23 #1
Knapperne referer til en anden frame
Avatar billede roenving Novice
04. juni 2005 - 13:09 #2
Hvad med at sætte billedet fra det dokument, som loader i iframen ?-)
Avatar billede asger.friis Nybegynder
04. juni 2005 - 16:39 #3
Prøv at kom med et eksempel
Avatar billede roenving Novice
04. juni 2005 - 17:07 #4
<body onload="parent.menuFrame.document.images['Kontakt_base'].src=/*URL*/'Knapper/Kontakt_down.gif'">
Avatar billede asger.friis Nybegynder
04. juni 2005 - 19:33 #5
tak for tippet, det virker, der bliver vist kontakt_down når siden loades. Men så snart jeg bevæger musen over kontakt-knappen og væk fra den igen bliver der vist knappen kontakt_base, men den skal blive ved med at vise kontakt_down sålænge man er inde på kontakt-siden. Derfor skal funktionerne i scriptet ovenfor deaktiveres når man er inde på kontakt-siden. Kan du hjælpe mig med det?
Avatar billede roenving Novice
05. juni 2005 - 06:09 #6
Tjah, så vil der nok være fornuft i at ændre funktionerne, så de viser _down i stedet for base, så der må vi lige have en funktion, for ellers bliver det for uoverskueligt i en event-handler:

<body onload="parent.menuFrame.makeActive('Kontakt');">

-- og så i den frame (menuFrame !-), som indeholder alle billederne/linkene:

<script type="tekst/javascript">
function makeActive(elmId){
  elm = document.images[elmId + "_base"];
  elm.src = =/*URL*/'Knapper/' + elmId + '_down.gif';
  elm.onmouseout = function(){
    changeImages( /*CMP*/ + elmId + '_base',/*URL*/'Knapper/'  + elmId + '_down.gif');
  }
}
</script>

-- men det virker ikke som om det er en optimal løsning, bl.a. er jeg stærkt i tvivl om det fornuftige i tags som /*CMP*/ !-)

-- og jeg ville helt sikkert finde en anden måde at få etableret forbindelse mellem links og billede, f.eks. ved at fjerne linket fuldstændigt og udføre alle funktioner direkte på billedet !-)
Avatar billede asger.friis Nybegynder
05. juni 2005 - 15:26 #7
Hej, igen. Det fungerer ikke rigtig, har forresten omrokeret min side lidt så menu.html (scriptet ovenfor) nu er i mappen "rammer", mens kontakt.html nu er i mappen "sider".  Har ellers taget højde for min omrokeringer udfra dit script, men virker stadig ikke, den siger at værdien på rammen "menu" er lig nul, hvilket ikke er korrekt. Til din orientering er index.html (hvor alle rammer samles) placeret i parentmappen, hvor også mapperne "Rammer" og "sider" ligger. Håber det hjalp dig, på forhånd tak
Avatar billede roenving Novice
08. juni 2005 - 01:26 #8
Hov, der er da et lighedstegn i overskud ,-(

  elm.src = /*URL*/'Knapper/' + elmId + '_down.gif';
Avatar billede asger.friis Nybegynder
08. juni 2005 - 15:02 #9
Det har jeg allerede rettet, den fotæller at frame(menu) ikke er et objekt. Hvad menes der med koden?
Avatar billede roenving Novice
08. juni 2005 - 15:12 #10
Bruger du så den rigtige adressering i onload-funktionen, det skal ikke i stedet for parent.menuFrame være top.menuFrame eller måske bare window.menuFrame ?-)
Avatar billede asger.friis Nybegynder
08. juni 2005 - 15:19 #11
Hvor skal denne onLoad helt præcist stå? Der hvor jeg har samlet rammerne, eller?
Jeg har et "indskrevent" frameset, hvor jeg ialt har 18 rammer, så ved ikke rigtig hvor og hvilken kode jeg skal bruge.
Avatar billede roenving Novice
09. juni 2005 - 02:37 #12
Det kan du f.eks., men det må kunne laves på en anden måde end at bruge 18 frames ...

-- ellers er rækkefølgen af onload-events indefra og ud:

1. onload på elementer (som indeholder src-attributter, f.eks img-tags !-) inde i et dokument

2. når alt i dokumentet er loadet (og evt. load er udført på alle relevante elementer !-) kommer body onload/window.onload

3. Derefter udføres en evt. onload på den (i)frame, som indeholder dokumentet

4. Når alle frames er loadet udføres onload på frameset-elementet ...

-- og der kan jo være mange af 1. før vi når til 2.

-- og 2+3 kan der findes mange af før 4 udføres ...

-- og så kan (2 til) 4 have flere lag !-)
Avatar billede roenving Novice
28. juli 2005 - 15:23 #13
... måske lige en reminder til dette, som stammer fra den mail-løse periode !-)
Avatar billede asger.friis Nybegynder
15. april 2006 - 17:34 #14
lukker
Avatar billede roenving Novice
16. april 2006 - 08:46 #15
Tak ,-(
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