Avatar billede kagge Nybegynder
11. oktober 2002 - 11:19 Der er 17 kommentarer og
1 løsning

Onchange via link

Lige et lille problem:

50 poster i alt
  20 poster med status = a
  25 poster med status = b
  5 poster med status = c

Ovenstående er når jeg hiver noget ud fra en database og viser det på en side for brugeren som det er nu.

Jeg tænkte på om man ikke kunne lave det lidt mere smart. Sån så man kun har

50 poster i alt

stående og hvis man så klikker på denne linje så kommer de 3 underliggende linier frem.

Altså noget "onchange" noget og noget "div" eller noget i den stil.

Jeg har kun lavet "onchange" på en select-menu og ved ikke om man kan lave det på samme måde med et link, som man jo kunne bruge i dette tilfælde.

Er der nogle som kan hjælpe eller har en ide til hvordan det kan laves?
Avatar billede jakoba Nybegynder
11. oktober 2002 - 11:38 #1
Avatar billede kagge Nybegynder
11. oktober 2002 - 11:44 #2
præcis...

Det skal også kun fungere i IE, da det er på et intranet det skal køre..

Hvis man har flere af den slags på en side kan man så også lave et link som enten folder alle ud eller lukker alle igen??
Avatar billede jakoba Nybegynder
11. oktober 2002 - 12:00 #3
Ja det kan man godt.
Som det er nu er koden hugget fra en menu hvor man netop kun ønsker een foldet ud ad gangen. men der er intet ivejen for at lave andre regler.

ids = {                // id værdier på divs der skal foldes
      rod: new Array( "menu1", "menu2", "menu3", "menu4" )
          };

//... uændret script ned til funktionen fold

function fold( nystatus, parentMenu ) {  // folder menupunkter ind og ud
    if ( menuOff || ! parentMenu ) return;

    var menu = ids[parentMenu];
    for (var i = 0; menu.length > i; i++) {

        var el = idObj[menu[i]] || hentId(menu[i]);
        if ( ! el ) return;
        el.style.display =  nystatus;

    }
}; //end fold( string, string )

og dine folde ud og ind links skal så være
  <a href="#" onclick="fold( 'block', 'rod' );return false;">Fold alle ud</a>
  <a href="#" onclick="fold( 'none', 'rod' );return false;">Fold alle sammen</a>

mvh JakobA
Avatar billede kagge Nybegynder
11. oktober 2002 - 12:04 #4
Skal der så ændres meget hvis man ønsker at der ikke kun skal være 1 menu åben ad gangen, men at det er valgfrit hvor mange af menuerne man ønsker at være åbne ad gangen?
Avatar billede kagge Nybegynder
11. oktober 2002 - 12:06 #5
Altså sådan så når man åbner en menu så skal den anden ikke automatisk lukkes, den skal bare forblive åben.

Du skal altså nok få nogle flere points hvis du ønsker det :)
Avatar billede jakoba Nybegynder
11. oktober 2002 - 12:12 #6
Nej der skal ikke ændres meget. jeg har lavet ændringen i scriptet @11/10-2002 12:00:32

dine forskellige divs skal så hedde id="menu1", id="menu2", osv.

Ups. og onload handleren skal være: "fold( 'none', 'rod' );"

tak for pts.

mvh JakobA
Avatar billede kagge Nybegynder
11. oktober 2002 - 12:15 #7
Takker for hjælpen :)
Avatar billede kagge Nybegynder
11. oktober 2002 - 14:13 #8
-> Jakoba

Jeg får følgende fejlmeddelelse når jeg klikker på linkene EKSEMPEL 1 og EKSEMPEL 2:

Egenskaben display kunne ikke hentes. Argumentet er ugyldigt!!!!

Nedenstående er min kode:




ids = {                // undermenuer for hvert menupunkt
      rod: new Array( "menu1", "menu2" )
          };

idObj = new Object();  // bruges til at huske de anvendte HTML-elementer

menuOff = false;    // sættes sand for NS4 og evt andre browsere der ikke
                    // understøtter denne menu
function hentId( id, menu ) {
    if ( document.getElementById )
        idObj[id] = document.getElementById(id);
    else if ( document.all )
        idObj[id] = document.all[id];
    if ( idObj[id] ) {
        return idObj[id];
    } else {
        alert( "denne browser kan ikke håndtere menuen korrekt." );
        menuOff = true;
        return null;
    }
}; //end hentId( string ) -> HTNL element


function fold( nystatus, parentMenu ) {  // folder menupunkter ind og ud
    if ( menuOff || ! parentMenu ) return;

    var menu = ids[parentMenu];
    for (var i = 0; menu.length > i; i++) {

        var el = idObj[menu[i]] || hentId(menu[i]);
        if ( ! el ) return;
        el.style.display =  nystatus;

    }
}; //end fold( string, string )

<BODY bgcolor="lightsteelblue" marginwidth=20 leftmargin=20 onload="fold('none', 'rod');">



<a href="#" onclick="fold( 'block', 'rod' );return false;">Fold alle ud</a>
<a href="#" onclick="fold( 'none', 'rod' );return false;">Fold alle sammen</a>


<a href="#" onClick="if (this.blur) this.blur(); fold('menu1','rod'); return false;"> EKSEMPEL 1</a><br>
<div id="menu1" style="display: block; margin-left:20;">
  <%=statusluk%> poster med status lukket sag.<br>
  <%=statusvid%> poster med status videresendt til....<br>
  <%=statusafv%> poster med status afventer.<br>
</div>

<a href="#" onClick="if (this.blur) this.blur(); fold('menu2','rod'); return false;"> EKSEMPEL 2</a><br>
<div id="menu2" style="display: block; margin-left:20;">
  <%=statusluk%> poster med status lukket sag.<br>
  <%=statusvid%> poster med status videresendt til....<br>
  <%=statusafv%> poster med status afventer.<br>
</div>
Avatar billede jakoba Nybegynder
11. oktober 2002 - 14:30 #9
Ja det er kun links som de 2 øverste (der viser/gemmer alting) der kan bruges nu.

ønsker du at kunne åbne lukke dem enkeltvis?
Avatar billede kagge Nybegynder
11. oktober 2002 - 14:42 #10
jeps nemlig. Sådan så man både kan åbne/lukke dem enkeltvis og åbne/lukke alle sammen..

Er det muligt?
Avatar billede jakoba Nybegynder
11. oktober 2002 - 14:48 #11
Avatar billede pelkjaer Nybegynder
11. oktober 2002 - 14:53 #12
Man kunne også lave en sådan menu css styret - og blot bruge javascript til at skifte "klasserne".

Her vil Opera også være med, nn4 er mere tvivlsomt - men er den ikke snart død? :)

Jeg kan da godt lave et eks - eller er det ligemeget da det kun skal køre intranet?
Avatar billede kagge Nybegynder
11. oktober 2002 - 14:56 #13
-> Jakoba

Så er den lige i øjet. Nu er det præcis som det skal være...

-> Pelkjaer

Det er lige meget da det kun skal køre Intranet, men ellers tak..
Avatar billede jakoba Nybegynder
11. oktober 2002 - 15:04 #14
kagge >> selv tak
pelkjaer >> men kan vi lave en onclick handeler bare med CSS?
Avatar billede pelkjaer Nybegynder
11. oktober 2002 - 15:06 #15
jakoba>>ikke mig bekendt. Du kan vel :)
Avatar billede jakoba Nybegynder
11. oktober 2002 - 15:11 #16
næ jeg kan ikke, men hvis du ku ville jeg lære det :-))
der er vist noget om at IE 6 kan noget i den retning.
Avatar billede pelkjaer Nybegynder
11. oktober 2002 - 15:49 #17
Nej det har jeg desværre aldrig hørt om - hvis du har læst det et sted kunne jeg da godt tænke mig et link.

Nu har jeg alligevel bikset et eks sammen - men til min ærgelse kan jeg ikke umiddelbart få hverken nn4 eller opera med :(
Kun min IE og NS6
http://peterelkjaer.dk/exp/skiftklasse.html
Avatar billede pelkjaer Nybegynder
11. oktober 2002 - 16:21 #18
jakoba>>Jeg kan sq' ikke finde nogen speciel css event til dette (IE6 ) på msdn.

Det bedste de kan vise er onmouseover="this.className='blaa'" onmouseout="this.className='roed'" :(
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