Avatar billede himself13 Nybegynder
14. februar 2005 - 20:27 Der er 14 kommentarer og
1 løsning

Skjul/vis layer ved hjælp af JavaScript!

Hej,

Jeg har et lille problem!

Jeg har en dropdown-box, det jeg så ønsker er:

Hvis "Andet" vælges så skal feltet nedenunder blive synligt. I det øjeblik man så vælger noget andet end "Andet" skal laget blive skjult igen!

Hvad gør jeg galt, eller er det ikke muligt?


--- UDDRAG AF KODE ---

  <tr>
    <td><p class="text"><b>Hovedinstrument:&nbsp;</b></p></td>
    <td>
    <select class="stdipbut" style="width: 300px;">
      <option onclick="hide(\'prim_andet\')">Klaver</option>
      <option onclick="hide(\'prim_andet\')">Guitar</option>
      <option onclick="hide(\'prim_andet\')">El-Guitar</option>
      <option onclick="hide(\'prim_andet\')">Bas</option>
      <option onclick="hide(\'prim_andet\')">El-Bas</option>
      <option onclick="hide(\'prim_andet\')">Violin</option>
      <option onclick="hide(\'prim_andet\')">Tuba</option>
      <option onclick="hide(\'prim_andet\')">Saxofon</option>
      <option onclick="hide(\'prim_andet\')">Klarinet</option>
      <option onclick="hide(\'prim_andet\')"></option>
      <option onclick="show(\'prim_andet\')">Andet</option>
    </select>
    </td>
  </tr>
  <tr>
    <td><p class="text"><b> - Hvis andet:&nbsp;</b></p></td>
    <td><div id="prim_andet"><input type="text" name="prim_instrument_andet" class="stdipbut" style="width: 300px;"></div></td>
  </tr>

--- UDDRAG -- SLUT ---

Script:

      <script type="text/javascript">
      function show(layer_id)
      {
        if (document.layers)
            document.layers[layer_id].visibility='show';
        else if (document.all)
            document.all[layer_id].style.visibility='visible';
        else
            document.getElementById(layer_id).style.visibility='visible';
      }
      function hide(layer_id)
      {
        if (document.layers)
            document.layers[layer_id].visibility='hide';
        else if (document.all)
            document.all[layer_id].style.visibility='hidden';
        else
            document.getElementById(layer_id).style.visibility='hidden';
      }
      </script>


CSS:

        #prim_andet
        {
            position:relative;
            visibility:hidden;
        }
Avatar billede elskermad.dk Nybegynder
14. februar 2005 - 20:34 #1
utestet men noget lignende:

    <select class="stdipbut" style="width: 300px;" onChange='if(this.value=="andet"){show("prim_andet")}else{hide("prim_andet"}'>
      <option value='Klaver'>Klaver</option>
      <option value='Guitar'>Guitar</option>
      <option value='El-Guitar'>El-Guitar</option>
      <option value='Bas'>Bas</option>
      <option value='Elbas'>El-Bas</option>
      <option value='Violin'>Violin</option>
      <option value='Tuba'>Tuba</option>
      <option value='Saxofon'>Saxofon</option>
      <option value='Klarinet'>Klarinet</option>
      <option value=''></option>
      <option value='Andet'>Andet</option>
    </select>
Avatar billede roenving Novice
14. februar 2005 - 20:35 #2
<tr>
    <td><p class="text"><b>Hovedinstrument:&nbsp;</b></p></td>
    <td>
    <select class="stdipbut" style="width: 300px;" onchange="vis(this,'trAndet');">
      <option>Klaver</option>
      <option>Guitar</option>
      <option>El-Guitar</option>
      <option>Bas</option>
      <option>El-Bas</option>
      <option>Violin</option>
      <option>Tuba</option>
      <option>Saxofon</option>
      <option>Klarinet</option>
      <option></option>
      <option>Andet</option>
    </select>
    </td>
  </tr>
  <tr id="trAndet" style="display:none;">
    <td><p class="text"><b> - Hvis andet:&nbsp;</b></p></td>
    <td><div id="prim_andet"><input type="text" name="prim_instrument_andet" class="stdipbut" style="width: 300px;"></div></td>
  </tr>

<script type="text/javascript">
function vis(elm,id){
  var st = document.getElementById(id).style
  st.display=(elm.selectedIndex==10&&st.display!="block")?"block":"none";
}
</script>
Avatar billede roenving Novice
14. februar 2005 - 20:38 #3
-- og som du ser, har jeg lavet mit forslag udfra den antagelse, at du egentlig slet ikke ville have vist noget, hvis ikke man specielt havde valgt denne !-)

-- og document.layers er en NN4-ting, document.all vil enable funktionen i IE4 og ældre Operaer, mens getElementById er en DOM-binding fra ca. 1998, så den burde klare alle nutidige browsere !o]
Avatar billede himself13 Nybegynder
14. februar 2005 - 20:51 #4
roenving, smid lige et svar!
-> det virkede... :)

elskermad.dk -> det virkede desværre ikke!
Avatar billede roenving Novice
14. februar 2005 - 20:54 #5
Velbekomme '-)
Avatar billede roenving Novice
14. februar 2005 - 20:54 #6
-- og hov, 200 point er alt for mange, behold selv mindst halvdelen !-)
Avatar billede himself13 Nybegynder
14. februar 2005 - 21:00 #7
JA det kunne jeg!
Men det var meget vigtigt for mig at få et hurtigt og korrekt svar!

Det fik jeg! Tusind tak for det!
Avatar billede roenving Novice
14. februar 2005 - 21:01 #8
Jamen, så tak for point ;~}
Avatar billede himself13 Nybegynder
14. februar 2005 - 21:02 #9
Det er mig der takker!

...og så er det lukke tid!
Avatar billede himself13 Nybegynder
14. februar 2005 - 21:28 #10
roenving...

fandt lige ud af at den ikke virkede... eller skal man sige at jeg havde lavet en fejl!

Jeg skrev ikke noget 'value=""' i koden, og når jeg tilføjer det, så virker det ikke længere! :S kan du hjælpe mig?
Avatar billede himself13 Nybegynder
14. februar 2005 - 21:33 #11
Argh... jeg er alt for hurtig!

Det var ikke problemet!

Derimod er problemet at jeg ikke kan tilføje yderligere "options"?
Kan det passe?

Når der kommer mere end 11 går det galt.., hvad kan det skyldes?
Avatar billede roenving Novice
14. februar 2005 - 21:33 #12
-- det skulle ikke spille nogen trille, men jeg har jo været nødt til at hardcode selectedIndex af den grund !-)

-- så hvis du har ændret på antallet af options, vil det give 'sjove' resultater, hvis du ikke synkroniserer ...
Avatar billede roenving Novice
14. februar 2005 - 21:34 #13
Options er nummereret fra 0 og opad, så da du havde 11 options, havde den sidste nummer 10 !-)
Avatar billede himself13 Nybegynder
14. februar 2005 - 21:35 #14
Super tak for hjælpen!!

Nu virker det igen, er glad for din hurtige og effektive respons!
Avatar billede himself13 Nybegynder
14. februar 2005 - 21:49 #15
roenving -> hvad så hvis man vil bruge "radio"?

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