Avatar billede jobb Nybegynder
15. juni 2008 - 21:22 Der er 15 kommentarer og
1 løsning

clikmenu virker ikke

Hej eksperter jeg kunne godt tænke mig at få min menu til at åbne og lukke i samme script når man kilkker på linket

jeg har kæmpet mig blind på det jeg har lavet og kan ikke få det til at virke

function clikmenu(elmnt){
if(document.getElementById(elmnt).style.visibility='hidden')
{
document.getElementById(elmnt).style.visibility='visible';
}else{
document.getElementById(elmnt).style.visibility='hidden';
}
}

Hilsen jobb
Avatar billede hr__hallandsen Nybegynder
16. juni 2008 - 00:34 #1
Du kan ikke bruge getElementById() på den måde.

getElementById() tager en streng som parameter, ikke et objekt.

Brug elmnt.style.visibility i stedet og onclick="clickmenu(this);"

/Hallandsen
Avatar billede olebole Juniormester
16. juni 2008 - 09:24 #2
<ole>

hr__hallandsen >> og da 'elmnt' meget sandsynligt er en streng, kan man i dén grad bruge getElementById() på den måde. Uden at vide, hvordan spørgeren kalder funktionen, er der vist ingen, der kan siger ret meget begavet om, hvad der skal gøres  ;o)

jobb >> Prøv at vise noget mere kode  =)

/mvh
</bole>
Avatar billede hr__hallandsen Nybegynder
16. juni 2008 - 13:06 #3
olebole >> ja, det er da muligt. Jeg skrev som jeg gjorde, da jeg selv ville bruge "this".

Men kunne det så ikke skyldes, at der i if-sætningen er brugt tildelingsoperatoren "=" i stedet for sammenligningsoperatoren "==", så udtrykket altid vil returnere true?

/Hallandsen
Avatar billede w13 Novice
16. juni 2008 - 13:09 #4
Som hr_hallandsen påpeger, skyldes fejlen vel, at du ikke bruger "==" i if-sætningen, men kun "=". I øvrigt kan det gøres noget kortere:

function clikmenu(elmnt){
  elmnt=document.getElementById(elmnt);
  elmt.style.visibility=elmt.style.visibility=="hidden"?"visible":"hidden";
}
Avatar billede w13 Novice
16. juni 2008 - 13:17 #5
Men som det også er nævnt, kunne du måske med fordel overføre "this" til funktionen og på den vis nøjes med funktionen:

function clikmenu(o){
  o.style.visibility=o.style.visibility=="hidden"?"visible":"hidden";
}
Avatar billede w13 Novice
16. juni 2008 - 13:17 #6
function clikmenu(elmnt){
  elmnt=document.getElementById(elmnt);
  elmt.style.visibility=elmt.style.visibility=="hidden"?"visible":"hidden";
}

skulle i øvrigt være:

function clikmenu(o){
  o=document.getElementById(o);
  o.style.visibility=o.style.visibility=="hidden"?"visible":"hidden";
}
Avatar billede olebole Juniormester
16. juni 2008 - 14:23 #7
- eller:

function clikmenu(o){
  if (typeof o=="string") o=document.getElementById(o);
  o.style.visibility=o.style.visibility=="hidden"?"visible":"hidden";
}
Avatar billede jobb Nybegynder
16. juni 2008 - 17:25 #8
Jeg får en objekt fejl når jeg smider scriptet ind jeg kalder med denne her

<td rowspan="2"  onmousedown="clikmenu('profil')">
  <a href="#"><img src="images/one_10.gif" width="112" height="40" alt="" border="0"></a><br>
  <table class="menu" id="profil" cellspacing="0" cellpadding="0">
  <tr><td class="menu"><a href="#"><img src="images/under_1.gif" width="112" height="178" alt="" border="0"></a></td></tr>
  </table>
  </td>

og min class menu er hidden til at starte med
Avatar billede w13 Novice
16. juni 2008 - 17:32 #9
Hvilken objekt-fejl får du og hvilken linje?
Avatar billede jobb Nybegynder
16. juni 2008 - 18:09 #10
linie 49 og et objekt var ventet...
Avatar billede jobb Nybegynder
16. juni 2008 - 18:13 #11
denne her linie <td rowspan="2"  onmousedown="clikmenu('profil')">
Avatar billede hr__hallandsen Nybegynder
16. juni 2008 - 18:35 #12
Hvilken funktion har du brugt?

Jeg får ingen fejl ved oleboles sidste funktion.

<script type="text/javascript">
function clikmenu(o){
  if (typeof o=="string") o=document.getElementById(o);
  o.style.visibility=o.style.visibility=="hidden"?"visible":"hidden";
}
</script>


<table><tr>
<td rowspan="2"  onmousedown="clikmenu('profil')" border=1>
  <a href="#"><img src="images/one_10.gif" width="112" height="40" alt="" border="0"></a><br>
  <table class="menu" id="profil" cellspacing="0" cellpadding="0">
  <tr><td class="menu"><a href="#"><img src="images/under_1.gif" width="112" height="178" alt="" border="0"></a></td></tr>
  </table>
  </td>
</tr></table>

/Hallandsen
Avatar billede jobb Nybegynder
16. juni 2008 - 18:53 #13
Åhh det var mig der havde laver en taste fejl sorry

Men det driller mig stadig hvad kan det være når jeg skal trykke 2 gange første gang jeg kommer ind på siden og ellers køre den som den skal
Avatar billede w13 Novice
16. juni 2008 - 22:36 #14
Så ret:
  o.style.visibility=o.style.visibility=="hidden"?"visible":"hidden";
til:
  o.style.visibility=o.style.visibility!="visible"?"visible":"hidden";
Avatar billede jobb Nybegynder
16. juni 2008 - 23:30 #15
Jeg vil gerne dele pointene mellem jer i må gerne lægge et svar
En anden ting er hvordan får jeg hvis jeg har flere lukket de andre (hidden).
Avatar billede w13 Novice
17. juni 2008 - 09:10 #16
Her er et svar! :)
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