Avatar billede learner Praktikant
05. november 2008 - 15:56 Der er 9 kommentarer og
1 løsning

style display none fjerner ikke hele min select

hej jeg har lavet en quick guide. i midten af siden der spørg: Hvad vil du? i en select box ( http://www.huggernet.dk/ )

Jeg synes det er smart men jeg vil høre om:

1. Er den kompatibel med forskellige browsere? Eller er der noget jeg bør være obs på?

2. Den laver et linieskift når man vælger fx "sælge". og jeghar prøvet at skrive inline og block, men det er samme problem
this.style.display='none'; ser ik ud til at virke efter hensigten.

Her er funktionen som jeg bruger til at skjule select med:
function root(toObject){
    if(document.getElementById)return(document.getElementById(toObject));
    else if(document.all)return(document.all[toObject]);
    else if(document.layers)return(eval("document." + toObject));
    else return(null);
}
function closeobj(obj){
    objToClose=root(obj);
    objToClose.style.display="none";
}

her er en miniudgave af sidens kildekode:
<form name="form">
    <select name="level_a" id="level_a" onChange="this.style.display='none'; openobj(this.value);">
        <option value="" selected="selected">Hvad vil du?</option>
        <option value="level_buy">Jeg vil købe</option>
    </select>
    <select name="level_buy" id="level_buy" style="display:none;" onChange="this.style.display='none'; openobj(this.value);">
        <option value="" selected="selected">Hvad vil du købe?</option>
        <option value="level_buy_parts_car">Autodele</option>
        <option value="level_buy_parts_mc">Motorcykeldele</option>
    </select>
    <select name="level_buy_parts_car" id="level_buy_parts_car" style="display:none;" onChange="MM_jumpMenu('self',this);">
        <option value="" selected="selected">Hvordan vil du søge efter delene?</option>
        <option value="/pgs/quicklist.php?whichparts=car">Jeg vil søge i databasen og se hvad det giver</option>
        <option value="/pgs/efterlys.php?whichparts=car">Jeg vil efterlyse delene og indrykke en annonce</option>
    </select>
    <select name="level_buy_parts_mc" id="level_buy_parts_mc" style="display:none;" onChange="MM_jumpMenu('self',this);">
        <option value="" selected="selected">Hvordan vil du søge efter delene?</option>
        <option value="/pgs/quicklist.php?whichparts=mc">Jeg vil søge i databasen og se hvad det giver</option>
        <option value="/pgs/efterlys.php?whichparts=mc">Jeg vil efterlyse delene og indrykke en annonce</option>
    </select>
</form>
Avatar billede w13 Novice
05. november 2008 - 16:05 #1
Hvis du sætter:

    <select name="level_a" id="level_a" onChange="this.style.display='none'; openobj(this.value);">
        <option value="" selected="selected">Hvad vil du?</option>
        <option value="level_buy">Jeg vil købe</option>
    </select>

til som standard at være block, så slipper du måske for, at den "hopper".

Koden vil virke helt fint i alle browsere. Det er faktisk lidt overkill at have:

    if(document.getElementById)return(document.getElementById(toObject));
    else if(document.all)return(document.all[toObject]);
    else if(document.layers)return(eval("document." + toObject));
    else return(null);

Det er kun til meget gamle browsere. I dag understøtter alle document.getElementById(), så du kan bare rette det til:

  sreturn(document.getElementById(toObject));
Avatar billede learner Praktikant
05. november 2008 - 16:31 #2
okay :)
Jeps det virkede perfekt :)

Så lige et tillægsspørgsmål hvis det er ok :

Jeg vil lave sådan man kan gå tilbage igen. og har lavet en
<option value="level_a"><--- Tilbage</option>
i bunden af alle select'er. Og det virker, men så når den kommer tilbage så går der rod i den. Den står ikke i den øverste valgmulighed som den gjorde fra start, så der skal nok laves noget med at den vælger den øverste, men hvordan?

Jeg vil altså gerne have den til at nulstille level_a så den har valgt den første "Hvad vil du?"

Hvordan gør jeg det?

;o)
Avatar billede w13 Novice
05. november 2008 - 16:38 #3
Så mangler du lige at vise din openobj-funktion.
Avatar billede learner Praktikant
05. november 2008 - 16:42 #4
hehe ja da :)

function openobj(obj){
    objToOpen=root(obj);
    objToOpen.style.display="block";
}
Avatar billede w13 Novice
05. november 2008 - 16:44 #5
function openobj(obj){
    objToOpen=root(obj);
    objToOpen.style.display="block";
    objToOpen.selectedIndex=0;
}

skulle kunne klare det. =)
Avatar billede learner Praktikant
05. november 2008 - 16:44 #6
kunne man sætte den til at nulstille sig selv
noget lign:

onChange="this.style.display='none'; openobj(this.value); this.nulstil.til.valgt='første' "

hehe :o)
Avatar billede learner Praktikant
05. november 2008 - 16:45 #7
ahhh du har ordnet det :) allerede :o)

Tusind tak for hjælpen :)
Avatar billede w13 Novice
05. november 2008 - 16:50 #8
Og tak for points!
Avatar billede learner Praktikant
05. november 2008 - 16:55 #9
hmm jeg oplever en lille fejl med det. kan du fortælle om der er noget galt i den måde jeg har skrevet det her:

onChange="if (this.value='level_a'){this.style.display='none'; openobj('level_a'); this.selectedIndex=0;}else{MM_jumpMenu('self',this);}"
Avatar billede learner Praktikant
05. november 2008 - 16:58 #10
(this.value='level_a')
skulle laves om til
(this.value=='level_a')
så virker det

Tak
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