Avatar billede -jesper- Nybegynder
04. februar 2004 - 13:25 Der er 12 kommentarer og
1 løsning

skjule flere id-tags vha. CSS

Hejsa..

Jeg har gang i lidt let programmering med at skjule et par rows "<tr>" i en tabel på en side:

Her er et eksempel:

<html>
<head>
<title>Vis/skjul tekst</title>
<script>
function toggle(e) {
  if (e.style.display == "none") {
    e.style.display = "";
  } else {
    e.style.display = "none";
  }
}
</script>
</head>
<body>
<div style="cursor: hand" onclick="toggle(document.all.HideShow);">
Klik her!
</div>
<table><tr><td>Hej</td></tr>
<tr id="HideShow"><td bgcolor="red">Dette vil forsvinde</td></tr>
<tr><td>Farvel</td></tr>
</table>
</body>
</html>

Mit problem er at jeg gerne ville kunne gøre det på flere rækker. Altså at jeg f.eks. skal have følgende til at forsvinde:

....
<tr id="HideShow"><td bgcolor="red">Dette vil forsvinde</td></tr>
<tr id="HideShow"><td bgcolor="red">Hvad med dette?</td></tr>
....

JavaScript kan selvfølgelig ikke li' at der er flere elementer der hedder det samme, men hvordan kan jeg få skjult begge rows på en gang?

Det virker så vidt jeg har prøvet kun med "id=xxxx" og ikke "class=xxxx" - nogen der kan hjælpe? :)
Avatar billede doggy82 Praktikant
04. februar 2004 - 13:32 #1
ja id kan kun bruges på ét element. Class kan bruges på flere. Så brug class.
Feks:
tr.hideshow {display:none;}
kan bruges på flere
Avatar billede -jesper- Nybegynder
04. februar 2004 - 13:40 #2
Hmm, jeg sidder lidt og slås med dit forslag men kan ikke rigtig få det til at virke som det skal.

Kunne du lokkes til at prøve at strikke et eksempel sammen hvor man kan skiftevis skjule/vise 2 tr's? :)
Avatar billede nute Nybegynder
04. februar 2004 - 13:51 #3
<html>
<head>
<title>Vis/skjul tekst</title>
<style>
    #HideShow
    {
        display:inline;
    }
</style>
<script>
function toggle (className) {
      var all = document.all ? document.all : document.getElementsByTagName('*');
      var elements = new Array();
      for (var i = 0; i < all.length; i++)
      {
          if (all[i].className == className)
        {
            if( all[i].style.display == '' || all[i].style.display == 'inline')
            {
                all[i].style.display = 'none';
            }
            else
            {
                all[i].style.display = 'inline';
            }
        }
    }
  return elements;
}
</script>
</head>
<body>
<div style="cursor: hand" onclick="toggle('HideShow');">
Klik her!
</div>
<table><tr><td>Hej</td></tr>
<tr class="HideShow"><td bgcolor="red">Dette vil forsvinde</td></tr>
<tr><td>Farvel</td></tr>
<tr class="HideShow"><td bgcolor="red">Dette vil også forsvinde</td></tr>
</table>
</body>
</html>

/nute
Avatar billede -jesper- Nybegynder
04. februar 2004 - 13:54 #4
Wow - tusind tak, nute.. Tænkte nok det var noget med en løkke som løb elementerne igennem! Mange tak for dit eksempel - det vil jeg straks brygge videre på! :)
Avatar billede nute Nybegynder
04. februar 2004 - 13:59 #5
fino ... men det er ikke 200 points værdt ... stik mig 40-59,7 points, så er jeg fornøjd

;o]
Avatar billede jakobdo Ekspert
04. februar 2004 - 16:08 #6
Løsningen virker fint i IE og OPERA, men Mozilla er ikke så glad for denne løsning!
Avatar billede nute Nybegynder
04. februar 2004 - 17:05 #7
hmm ... det har du sgu ret i ... hvorfor den ikke fungerer, må jeg ærlig indrømme at jeg ikke helt kan overskue. tips modtages med tak !

/nute
Avatar billede roenving Novice
04. februar 2004 - 18:26 #8
<style>
    .HideShow{ /*classes angives med . -- id'er med # */
        display:inline;
    }
</style>
Avatar billede nute Nybegynder
04. februar 2004 - 20:18 #9
DOH !!! det har åbenbart været en dårlig dag ...

men det fungerer dog stadig ikke i mozilla ... mon ikke det er fordi jeg sidder med en oldtidsversion af mozilla på denne computer ?

/nute
Avatar billede jakobdo Ekspert
04. februar 2004 - 20:53 #10
Selvom # ændres til . virker det ikke i Mozilla 1.4, tidligere prøvede jeg på en version 1.6, virkede heller ikke!
Avatar billede roenving Novice
05. februar 2004 - 12:46 #11
Det virkede, men ikke efter hensigten, hvorfor kan jeg ikke lige gennemskue, for der afsættes noget ekstra plads ...

-- efter en udrydning af potentielt farligt navngivne ting (all, className osv. og ændring af display-property til det mere passende 'block'), giver den stadig tilføjelse af højden, når det igen vises !o]

At cursor så mere hensigtsmæssigt kan hedde pointer (kun IE forstår hand !-) er så en helt anden sag ...
Avatar billede roenving Novice
05. februar 2004 - 12:49 #12
Undrer mig, for jeg har da lavet denne slags før ?-)

-- og det virker upåklageligt, når det er celler !-)
Avatar billede nute Nybegynder
05. februar 2004 - 12:49 #13
ja, det er den lille ekstra højde der bliver sat ind, jeg hellere ikke hel kan gennemskue ...

|-:-|
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