Avatar billede webblaster Nybegynder
21. februar 2006 - 14:33 Der er 6 kommentarer og
1 løsning

problemer med treemenu

Hej

Jeg har et problem med dette script, som er en menu knap som når der trykkes på linket skal underknappen enten vises eller skjules og som default er den skjult, men det virker ikke?:

<html>
<body>
<table width="198" cellpadding="0" cellspacing="0" bgcolor="#ffffff" >
  <tr valign="middle">
    <td>
    <img src="../../image/buttonIcons/users.jpg" />
    </td>
    <td background="../../image/background/menu_button_back.jpg">  <a href="#" onClick="document.getElementById('menu1').style.display = (document.getElementById('menu1').style.display == 'none') ? 'block' : 'none'; if(document.all.pl_1.style.display==''){document.all.pl_1.style.display='none';document.all.mi_1.style.display='';}else{document.all.pl_1.style.display='';document.all.mi_1.style.display='block';} return true;"> Button_Text</a></td>
  </tr>
<div id="menu1" style="display: none;">
<tr>
    <td width="50" height="29"><img src="../../image/buttonIcons/Sicon.jpg" width="50" height="29"></td>
   
    <td width="146" height="29" background="../../image/background/menu_sbutton_back.jpg"></td>
 
  </tr>
  </div>
</table>
</body>
</html>   

er der nogle der kan se hvor fejlen er??!!
Avatar billede milandt Nybegynder
21. februar 2006 - 15:31 #1
<html>
<head>
<script type="text/javascript">
    function getObj(id)
    {
        return document.getElementById(id);
    }
   
    function toggle()
    {
        getObj('menu1').style.display = (getObj('menu1').style.display == 'none') ? 'block' : 'none';
       
        /*
        if(document.all.pl_1.style.display=='')
        {
            document.all.pl_1.style.display='none';
            document.all.mi_1.style.display='';
        }
        else
        {
            document.all.pl_1.style.display='';
            document.all.mi_1.style.display='block';
        }
        */
        return true;
    }
</script>

</head>
<body>
    <table width="198" cellpadding="0" cellspacing="0" bgcolor="#ffffff" id="Table1">
        <tr valign="middle">
            <td>
                <img src="../../image/buttonIcons/users.jpg" />
            </td>
            <td background="../../image/background/menu_button_back.jpg">
                <a href="#" onclick="toggle();"> Button_Text</a>
            </td>
        </tr>
        <tr id="menu1">
            <td width="50" height="29"><img src="../../image/buttonIcons/Sicon.jpg" width="50" height="29"></td>
           
            <td width="146" height="29" background="../../image/background/menu_sbutton_back.jpg"></td>
           
        </tr>
    </table>
</body>
</html>
Avatar billede milandt Nybegynder
21. februar 2006 - 15:34 #2
Jeg har rettet nogen ting til, og gjort det lidt mere overskueligt.

For det førset kan du ikke have en div rundt om dit tr element. Til gengæld er der ikke noget i vejen for at sætte et id på din tr og så skjule/vise dette.

Jeg har lagt javascriptet op i headeren, for overskuelighedens skyld. Bemærk at jeg har udkommenteret noget - jeg kan simpelthen ikke gennemskue hvorfor du havde dette med.

Anyway, det virker som det er ovenfor her. Når du klikker på linket bliver den sidste tr skjult, og klikker du igen bliver den vist.
Avatar billede webblaster Nybegynder
21. februar 2006 - 16:19 #3
hej tak for svaret. Det du udkommenteret er noget script som bruges til at vise de billeder som indgår i knapperne du kan se to eks. her :
www.fzone.dk/default.html Det er dit script + det udkommenteret; men det opfører sig desværre stadig noget underligt hvis man klikker på hovedet linket/knappen 2 gange så bliver knappen splittet op.

og på:
www.fzone.dk/default2.html er dit script - det udkommenteret og det funker ikke *S*.
Avatar billede milandt Nybegynder
21. februar 2006 - 17:24 #4
Grudnen til at du ikke har fået det jeg lavede til at virke, er at du har ændret i udkommenteringen. Se her:

<script type="text/javascript">
    function getObj(id)
    {
        return document.getElementById(id);
    }
 
    function toggle()
    {
        getObj('menu1').style.display = (getObj('menu1').style.display == 'none') ? 'block' : 'none';
     
        /*
        if(document.all.pl_1.style.display=='')
        {
            document.all.pl_1.style.display='block';
            document.all.mi_1.style.display='';
        }
        else
        {
            document.all.pl_1.style.display='';
            document.all.mi_1.style.display='none';
        }
       
        return true;
    } */
</script>

Læg mærke til hvor udkommenteringen starter, og hvor du har afsluttet den. Du har afsluttet udkommenteringen to linier længere nede end jeg havde gjort, hvilket resulterer i at linien "return true" og "}" ikke er med.
Avatar billede milandt Nybegynder
21. februar 2006 - 17:33 #5
Og grunden til at det første eksempel ( www.fzone.dk/default.html ) opfører sig underligt, er at en tr har ikke som udgangspunkt display:block (som vi så ændrer til none). En tr har display:table-row.

Du skal altså ændre linien i toggel funktionen til:

getObj('menu1').style.display = (getObj('menu1').style.display == 'none') ? 'table-row' : 'none';

Jeg kan stadig ikke se hvad alt det der har med document.all at gøre laver i dit onclick event. Det får bare javascriptet til at fejle.
Avatar billede webblaster Nybegynder
21. februar 2006 - 23:33 #6
ok jeg har fået det til at virke så smid et svar så du kan få point *S*
Avatar billede milandt Nybegynder
22. februar 2006 - 09:44 #7
you are welcome
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