Avatar billede bodyguard Nybegynder
14. september 2007 - 10:03 Der er 8 kommentarer og
1 løsning

onmouseover this.className funktion

Hej Eksperter,

Jeg har en lille drilsk en her...

Jeg har lavet en menu bestående af fem DIV's, hver div ser sådan her ud:

<div class="menudiv1" onmouseover="this.className='menudiv2'" onmouseout="this.className='menudiv1'">&nbsp;</div>

Jeg kunne godt tænke mig en funktion der gør at hvis man klikker på en div så bliver menudiv2 den aktive class, men uden at den går tilbage til menudiv1 fra onMouseOut...

Og for lige at tviste den lidt hvis man så klikker i en anden DIV skal den før aktive DIV skifte til Class menudiv1 og den ny markerede DIV skal så skifte til menudiv2... OSV...

Jeg håber i forstår hvad jeg mener :)
Avatar billede crazysnap Seniormester
14. september 2007 - 15:13 #1
Hej bodyguard,


F.eks sådan her?


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://schemas.microsoft.com/intellisense/html-401">
    <head>
        <title>Example</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
       
        <style type="text/css">
            .menudiv1 { color: Red; }
       
            .menudiv2{ color: Blue; }
        </style>
       
        <script type="text/JavaScript">
        var divTemp = null;
       
        function Click(divItem)
        {
            if(divTemp != null)
                divTemp.className = 'menudiv1';               

            divTemp = divItem;
            divTemp.className = 'menudiv2';
        }
       
        function Over(divItem)
        {
            divItem.className = 'menudiv2';
        }
       
        function Out(divItem)
        {
            if(divTemp != divItem)           
                divItem.className = 'menudiv1';
        }
        </script>
    </head>
    <body>
        <table>
            <tr>
                <td>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this);">div1</div>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this);">div2</div>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this);">div3</div>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this);">div4</div>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this);">div5</div>
                </td>
            </tr>
        </table>
    </body>
</html>


Mvh.

- Snap :)
Avatar billede bodyguard Nybegynder
14. september 2007 - 16:58 #2
Det er helt nøjagtigt det jeg søger :D
Avatar billede crazysnap Seniormester
15. september 2007 - 17:20 #3
Hej bodyguard,


Det er jeg glad for at høre, så sender jeg et svar! :)


Mvh.

- Snap
Avatar billede bodyguard Nybegynder
17. september 2007 - 03:25 #4
Måske kan du kombinere scriptet med dette spørgsmål?

http://www.eksperten.dk/spm/796310
Avatar billede crazysnap Seniormester
17. september 2007 - 09:41 #5
Hej bodyguard,


så kunne man f.eks. gøre sådan her:



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://schemas.microsoft.com/intellisense/html-401">
    <head>
        <title>Example</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
       
        <style type="text/css">
            .menudiv1 { color: Red; }
       
            .menudiv2{ color: Blue; }
        </style>
       
        <script type="text/JavaScript">
        var divTemp = null;
        var content = null;
       
        function Click(divItem, strConId)
        {                         
            resetMenu();
           
            divTemp = divItem;
            divTemp.className = 'menudiv2';
           
            content = document.getElementById(strConId);
            content.style.display = "block";
        }
       
        function resetMenu()
        {
            if(divTemp == null)
                return;
               
            divTemp.className = 'menudiv1';
            content.style.display = "none";       
        }
       
        function Over(divItem)
        {
            divItem.className = 'menudiv2';
        }
       
        function Out(divItem)
        {
            if(divTemp != divItem)           
                divItem.className = 'menudiv1';
        }
        </script>
    </head>
    <body>
        <table width="150px">
            <tr>
                <td align="center" style="border: solid 1px blue;">
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this, 'mnuContent1');">div hoved menu 1</div>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this, 'mnuContent2');">div hoved menu 2</div>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this, 'mnuContent3');">div hoved menu 3</div>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this, 'mnuContent4');">div hoved menu 4</div>
                    <div class="menudiv1" onmouseover="Over(this);" onmouseout="Out(this);" onclick="Click(this, 'mnuContent5');">div hoved menu 5</div>
                </td>
            </tr>
            <tr>
                <td align="center" style="border: solid 1px gray;">
                    <div id="mnuContent1" style="display: none;">
                        Dette er content1
                    </div>
                    <div id="mnuContent2"  style="display: none;">
                        <table>
                            <tr>
                                <td>
                                    Dette er content 2
                                </td>
                            </tr>
                            <tr>
                                <td style="background-color: Gray; color: White;">
                                    Lidt mere indhold
                                </td>
                            </tr>
                        </table>
                    </div>
                    <div id="mnuContent3"  style="display: none;">
                        Dette er content 3
                    </div>
                    <div id="mnuContent4"  style="display: none;">
                        Dette er content 4
                    </div>
                    <div id="mnuContent5"  style="display: none;">
                        Dette er content 5
                    </div>
                </td>
            </tr>
        </table>
    </body>
</html>


Til forskel for det spørgsmål du refererede til cloner og append'er jeg ikke nogen nodes, jeg lader bare de divs som skal vises ved hvert menu punkt ligge der hvor de skal vises med display="none". Prøv eksemplet og se om det er det du leder efter, ellers må du jo lige uddybe lidt mere. :)


Mvh.

- Snap
Avatar billede bodyguard Nybegynder
17. september 2007 - 22:27 #6
Lige det jeg manglede... Gider du ik smide et svar :)
Avatar billede bodyguard Nybegynder
17. september 2007 - 22:28 #7
Måske du evt. kan hjælpe med dette problem:
http://www.eksperten.dk/spm/795749
Avatar billede crazysnap Seniormester
17. september 2007 - 23:15 #8
Hej bodyguard,


Lyder godt, jeg har smidt et svar og fået point, eller mente du måske til det andet spørgsmål (det du linkede til)?

Hvad dit tredje problem angår har jeg lavet en SELECT-liste der reagerer på pil op/pil ned samt Enter og Del. Det er lidt uklart af dit spørgsmål hvad det helt præcis er du har brug for, så hvis jeg poster mit eksempel derovre kan du jo uddybe derfra. :)

Mvh.

- Snap
Avatar billede bodyguard Nybegynder
17. september 2007 - 23:40 #9
Du skal ligge et svar her:

http://www.eksperten.dk/spm/796310
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger AI forretningskonsulent i Ballerup

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Afdelingschef til GDPR & Tech Regulation

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering