Avatar billede flushout Nybegynder
20. februar 2004 - 12:30 Der er 6 kommentarer og
1 løsning

Spørgsmål vedr. style.display='block'

Mit problem er, at jeg har nogle div's som bliver skjult eller vist afhængigt af havd brugeren indsætter i min form... På et tidspunkt i mit script bliver jeg nød til at vide, om det givne div er synligt eller ej, for at gøre det, har jeg forsøgt flere fremgangsmåder, ingen af dem virker?? Herunder er de:

if (FormID.DivID.style.display=='block'){
if (FormID.DivID.visibility=='visible'){
if (document.getElementByID(DivID).style.display=='block'){
if (document.getElementByID(DivID).visibility=='visible'){


Mit problem er, at det ikke virker. Herunder er de scripts jeg har lavet til at synliggøre og skjule div's. Jeg bruger en tilsvarende sammenligning i det uden problemer?!?!

function changeState(parent){
        // HERUNDER ER DEN I BRUG UDEN PROBLEMER:..
    if(document.getElementById(parent).style.display=='none'){
        expandEl(parent);
    }
    else{
        closeEl(parent);
    }
}

function expandEl(parent){
    document.getElementById(parent).style.display='block';
    return false;
}

function closeEl(parent){
    document.getElementById(parent).style.display='none';
    return false;
}

Mine div's bliver skjult og vist vha følgende attributter:

SKJULT DIV:

<div id="blabla" style="display:block"></div>

SYNLIGT DIV:

<div id="blabla1" style="display:none"></div>

Jeg håber i kan hjælpe, da jeg ikke selv kan se hvad der er galt..

TAK
Avatar billede skovenborg Nybegynder
20. februar 2004 - 16:32 #1
document.getElementByID skal hedde:
document.getElementById
ligesom du ellers skriver - men det måske bare en stavefejl ;-)
Avatar billede flushout Nybegynder
23. februar 2004 - 00:50 #2
ja, det var det :) ...

er der ikke nogen der ved hvad der er galt?
Avatar billede roenving Novice
23. februar 2004 - 01:00 #3
Sætter du i virkeligheden dine style-properties på tagget ?-)

-- der er nemlig et problem med at aflæse style-properties, hvis de f.eks. er sat i en style-block eller et eksternt stylesheet ...

Det betyder, at jeg altid bruger følgende konstruktion til vis/skjul-layers:

if(styleobject.display!='block'){
  styleobject.display = 'block';
}else{
  styleobject.display = 'none';
}

-- og så starter dem med display:none;
Avatar billede flushout Nybegynder
24. februar 2004 - 14:14 #4
Jeg kan godt vise og skjule de forskellige layers. Mit problem er når jeg skal finde ud af om et givent layer er skjult eller vist.. altså når jeg laver sammenligningen:

if(styleobjekt.display == 'block'){ ... }

Det vil den ikke gøre.. Jeg har vedlagt noget lidt mere ordnet kode herunder:

<SCRIPT language="JavaScript">
function validateInput(){
    var x=true;

        if (konkurrence.selskab_navn.value == 12){
            alert('hovsa, der er hul igennem 0');

//             ####### Herunder er de metoder jeg har prøvet #######
//            if (konkurrence.chooseFirmAndet.style.display =='block'){
//            if (konkurrence.chooseFirmAndet.visibility =='visible'){
//            if (document.getElementById(chooseFirmAndet).style.display =='block'){
//            if (document.getElementById(chooseFirmAndet).visibility =='visible'){

            if (konkurrence.chooseFirmAndet.style.display =='block'){
                alert('hovsa, der er hul igennem 1');
                if (konkurrence.selskab_navnAndet.value.length < 1) {
                    alert('hovsa, der er hul igennem 2');
                    selskabAndet.style.color="#BD0000";
                    x = false;
                }else {
                    selskabAndet.style.color="#000000";
                }
            }else {
                selskabAndet.style.color="#BD0000";
                alert('hovsa, der er hul igennem 3');
                changeState('chooseFirm');
                changeState('chooseFirmAndet');
                changeState('selskab');
                changeState('selskabAndet');
                x = false;
            }
        }else {
            if (konkurrence.selskab_navn.value == 0){
                alert('hovsa, der er hul igennem 4');
                selskab.style.color="#BD0000";
                x = false;
            }else {
                selskab.style.color="#000000";
            }
        }
   
    if (x == false){
        alert('Du har ikke besvaret alle spørgsmål på denne side. \nBesvar spørgsmål markeret med rødt og klik igen på "Fortsæt"');
    }
return x;
}

function changeState(parent){

//    if (document.getElementById(parent).visibility=='hidden'){
    if(document.getElementById(parent).style.display=='none'){
        expandEl(parent);
    }
    else{
        closeEl(parent);
    }

}

function expandEl(parent){
//    document.getElementById(parent).visibility='visible'
    document.getElementById(parent).style.display='block';
    return false;
}

function closeEl(parent){
//    document.getElementById(parent).style.visibility='hidden'
    document.getElementById(parent).style.display='none';
    return false;
}

</SCRIPT>

...bla bla </head><body> bla bla ...

<!-- ################ START PÅ HTML-KODE ################### -->

  <tr>
    <td height="50" width="250" class="brodtxt">

              <div id="selskab" style="display:block">
            Hvor er du forsikret i dag?
        </div>
        <div id="selskabAndet" style="display:none">
            Skriv venligst navnet på dit forsikringsselskab her:
        </div>

    </td>
    <td width="186">

            <div id="chooseFirm" name="chooseFirm" style="display:block">
                <select name="selskab_navn" id="selskab_navn" size=1 class="vaelger">
                      <Option value="0"> </option>
                      <Option value="1">Tryg</option>
                      <Option value="2">Alm. Brand</option>
                      <Option value="3">Codan</option>
                      <Option value="4">Fair</option>
                      <Option value="5">Alka</option>
                      <Option value="6">GF-Forsikring</option>
                      <Option value="7">Lærestandens Brandforsikring</option>
                      <Option value="8">Østifternes Brandforsikring</option>
                      <Option value="9">Købstædernes Forsikring</option>
                      <Option value="10">BG-forsikring</option>
                      <Option value="11">Danske Forsikring</option>
                      <Option value="12">Andet selskab</option>
                </select>
            </div>
        <div id="chooseFirmAndet" name="chooseFirmAndet"  style="display:none">
                  <input type="text" name="selskab_navnAndet" id="selskab_navnAndet">
              </div>

    </td>
  </tr>

############################

De alerts der er i koden er til at finde fejl.. Jeg har konkluderet, at problemet ligger der, hvor jeg vil finde ud af om DIV'et chooseFirmAndet er "block" Jeg har forsøgt adskillige metoder, som det også fremgår af koden, men ingen af dem virker endnu !?

Jeg er ret forvirret
Avatar billede roenving Novice
24. februar 2004 - 14:19 #5
if (konkurrence.chooseFirmAndet.style.display !='none'){
Avatar billede flushout Nybegynder
24. februar 2004 - 14:29 #6
Jeg har lige fået løst det, jeg droppede hele den sammenligning og lavede en global variabel "synlig" som er false som standard og bliver sat til true hvis det lag jeg tjekker for bliver gjort synligt.. :) :)
Avatar billede flushout Nybegynder
01. marts 2004 - 20:22 #7
Jeg rydder lige op og lukker den her, tak for hjælpen :)
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