Avatar billede ravnborg Nybegynder
13. oktober 2008 - 00:15 Der er 15 kommentarer og
2 løsninger

hjælp til lille vis/skjul script

Jeg har forsøgt at kaste mig ud i javascript, og er allerede støt på første problem.

Når jeg trykker på en knap, vil jeg gerne have at en tabel bliver vist, og når jeg igen trykker skal den skjules.

Mit gæt på en script er følgende, men det virker ikke.

function visEuropa(){
  if (document.getElementById('europa').style.display="inline"){
    document.getElementById('europa').style.display=("none");}
  else {
    document.getElementById('europa').style.display=("inline");}
}

Hvis jeg bare vil skjule tabellen og functionen kun er:
document.getElementById('europa').style.display=("none");
virker det fint, så mon ikke det er min if sætning den er galt med.
Avatar billede mcardle Nybegynder
13. oktober 2008 - 01:43 #1
var myFlag = false;
function visEuropa(){
  if (myFlag == false){
    document.getElementById('europa').style.display = "block";
    myFlag = true;
  }
  else {
    document.getElementById('europa').style.display = "inline";
    myFlag = false;
  }
}
Avatar billede mcardle Nybegynder
13. oktober 2008 - 01:43 #2
Det skulle virke :o)

//mcardle
Avatar billede majbom Novice
13. oktober 2008 - 08:49 #3
hvad med:

function visEuropa(){
  var table = document.getElementById('europa');
  if(table.style.display=="none"){
      table.style.display = "block";
  }else{
      table.style.display = "none";
  }
}
Avatar billede ravnborg Nybegynder
13. oktober 2008 - 11:26 #4
mcardle det virker fint, opret bare et svar.
Avatar billede majbom Novice
13. oktober 2008 - 12:27 #5
synes netop ikke mcardles virker, og det giver også mening, da han bruger block og inline, som er to forskellige måder at vise elementet på, ikke at skjule dem...
Avatar billede mcardle Nybegynder
13. oktober 2008 - 14:08 #6
Det var en fejl... Det skal naturligvis være inline eller block og none :o)

//mcardle
Avatar billede roenving Novice
13. oktober 2008 - 16:25 #7
-- men en vis/skjul-ting bør man ikke opbygge som en ting, der kun kan bruges mod et element, så skal man jo lave en ny function for hvert element ...

-- ofte vil man jo have en hel stribe elementer, og så er det bedst at starte med at skjule et evt. tidligere vist og så gøre det rigtige med det relevante element, f.eks.

<script type="text/javascript">
var oldElm = null;
function showHide(elm){
  if(typeof elm == "string")
    elm = document.getElementById(elm).style;
  var prev = elm.display;
  if(oldElm)
    oldElm.display = "none";
  elm.display = prev != "block" ? "block" : "none";
  oldElm = elm;
}
</script>
Avatar billede roenving Novice
13. oktober 2008 - 16:27 #8
Hrm, og det kan gøres en anelse klogere:

<script type="text/javascript">
var oldElm = null;
function showHide(elm){
  elm = typeof elm == "string" ? document.getElementById(elm).style : elm.style ? elm.style : elm;
  var prev = elm.display;
...
Avatar billede roenving Novice
13. oktober 2008 - 16:30 #9
-- det kaldes så med:

Fra en knap eller link udenfor elementet:

onclick="showHide('elmId');"

Fra et element, der skal gemmes:

onclick="showHide(this);"

Fra en knap eller link indeni elementet:

onclick="showHide(this.parentNode);"//evt. med to gange .parentNode
Avatar billede mcardle Nybegynder
13. oktober 2008 - 16:34 #10
Meget advanceret for sådan et lille stykke kode :oP

Men er det er jo rigtig nok. Det gør tingene nemmere senere, når du finder ud af at du skal gøre det samme ved et andet elm.

Længe leve logisk opbygning :o)

//mcardle
Avatar billede ravnborg Nybegynder
13. oktober 2008 - 16:50 #11
Nu har jeg godt nok fået noget at arbejde med ;-)
Jeg har afsat 30 point mere, så roenving og mcardle kan dele.

roenving: opret lige et svar.

Mange tak for hjælpen til jer alle.
Avatar billede roenving Novice
13. oktober 2008 - 17:24 #12
Velbekomme '-)
Avatar billede roenving Novice
13. oktober 2008 - 17:26 #13
-- og PS:

-- jeg bruger den negative forespørgsel så man kan sætte display-værdien i et stylesheet !o]
Avatar billede roenving Novice
13. oktober 2008 - 17:44 #14
-- og tak for point ;~}
Avatar billede ravnborg Nybegynder
13. oktober 2008 - 19:10 #15
>roenving
Jeg ved godt jeg har lukket spørgsmålet, men jeg har et lille spørgsmål til dit script.

Jeg har lavet en knap som gerne skulle kører scriptet på to tabeller, men det vil den ikke.
Jeg har indsat dette i knappen:
onclick="showHide('europa11');showHide('europa12');"

Er der en lille ting jeg skal gøre for at få det til at virke?
Hvis du skal til at ændre scriptet, opretter jeg gerne et nyt spørgsmål.

mvh
Ravnborg
Avatar billede mcardle Nybegynder
13. oktober 2008 - 19:33 #16
Takker for points :o)

//mcardle
Avatar billede roenving Novice
13. oktober 2008 - 23:08 #17
Da den lukker den gamle, vil et dobbeltkald lukke den første når den anden åbnes ...

Hrm, jeg skal lige tænke over den bedste måde at modificere det på !-)
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