Avatar billede filip_b_l Nybegynder
20. februar 2009 - 20:11 Der er 6 kommentarer og
1 løsning

køre 2 funktioner

Jeg har en html koder der ser sådan her ud

<div id="mov1" style="display: block;visibility: visible;">
    Teaser, <a onclick="checkBox(1);">fold ud</a>
</div>
<div id="movout1" style="display: none;visibility: hidden;">
    Hele indholdet, <a onclick="reset();">Fold ind igen</a>
</div>

<div id="mov2" style="display: block;visibility: visible;">
    Teaser, <a onclick="checkBox(2);">fold ud</a>
</div>
<div id="movout2" style="display: none;visibility: hidden;">
    Hele indholdet, <a onclick="reset();">Fold ind igen</a>
</div>
(alt 10 stk)

Min javascript ser sådan ud...

<script type="text/javascript">
<!--
  function reset() {
      for (var number = 1; number <= 10; number++) {
          var elm = document.getElementById("movout" + number);
          elm.style.visibility = "hidden";
          elm.style.display = "none";
          var elm = document.getElementById("mov" + number);
          elm.style.visibility = "visible";
          elm.style.display = "block";
      }
  }
  function checkBox(number) {
      var elm = document.getElementById("movout" + number);
      elm.style.visibility = "visible";
      elm.style.display = "block";
      var elm = document.getElementById("mov" + number);
      elm.style.visibility = "hidden";
      elm.style.display = "none";
    }

//-->
</script>


Det virker fint til at folde ud og lukke alle med... men jeg vil gerne at man kun kan have én foldet ud af gangen... jeg forestiller mig at køre reset() inden checkBox(number)... men jeg har prøvet at indsætte reset(); som første linie i checkBox(number), men det gør bare at der intet sker...

Kom med et bud...?
Avatar billede webdesigner Praktikant
20. februar 2009 - 21:02 #1
du kan lave en variabel der holder øje med om en er folde ud...
her er et eksembel.. er ikke helt famillijør med syntaksen men nog i denne stil...

<script type="text/javascript">
<!--
  var ud = 0;
  function reset() {
          if(var == 0){
      for (var number = 1; number <= 10; number++) {
          var elm = document.getElementById("movout" + number);
          elm.style.visibility = "hidden";
          elm.style.display = "none";
          var elm = document.getElementById("mov" + number);
          elm.style.visibility = "visible";
          elm.style.display = "block";
          var = 1;
          }else{
          }
      }
  }
  function checkBox(number) {
      var elm = document.getElementById("movout" + number);
      elm.style.visibility = "visible";
      elm.style.display = "block";
      var elm = document.getElementById("mov" + number);
      elm.style.visibility = "hidden";
      elm.style.display = "none";
      var = 0;
    }

//-->
</script>
Avatar billede webdesigner Praktikant
20. februar 2009 - 21:04 #2
sorry 'var' i reset() og checkBox() er self 'ud'...
Avatar billede webdesigner Praktikant
20. februar 2009 - 21:09 #3
eller du kunne lave en onMouseOut på din <div> din menu lige som på min side...

www.kakashi.dk/venture
Avatar billede filip_b_l Nybegynder
23. februar 2009 - 15:10 #4
nå, jeg fandt ud af at det skyldes en fejl i reset funktionen. Den kørte altid 10 gange, og når der var færre end 10 elementer (som i mit eksempel) døde js'en på det!
I stedet lavede jeg den sådan her, hvor den tjekker om elementet eksisterer før den prøer at ændre på det (og der med ikke laver fejl)

function reset() {
        for(var div=1; div <= 10; div++) {
            var dividout = "movout" + div
            var elm = document.getElementById(dividout);
            if(elm != undefined && elm != '') {
            elm.style.visibility = "hidden";
            elm.style.display = "none";
        }
        }
}
Avatar billede filip_b_l Nybegynder
23. februar 2009 - 15:10 #5
så derfor tar jeg selv pointene, med mindre nogen rigtigt tuder?
Avatar billede webdesigner Praktikant
23. februar 2009 - 19:07 #6
nice at det virker :)
Avatar billede olebole Juniormester
24. februar 2009 - 09:31 #7
<ole>

For det første er der vel ingen grund til at gemme elementet på to måder (både display og visisbility). Dernæst er der ingen grund til at bladre alle elementerne igennem, når der skal gemmes. Du kan nøjes med at huske den, der er vist:

<script type="text/javascript">
var aOpen = null;
function checkBox(number) {
    if (aOpen) {
        aOpen[0].style.display = "none";
        aOpen[1].style.display = "block";
    }
    var elm = document.getElementById("movout" + number);
    elm.style.display = "block";
    var elm2 = document.getElementById("mov" + number);
    elm2.style.display = "none";
    aOpen = [elm, elm2];
}
</script>

/mvh
</bole>
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