Avatar billede heyn Nybegynder
16. november 2005 - 12:45 Der er 14 kommentarer og
1 løsning

Divblokke som ikke reagerer på display=none

Jeg laver en serie af divbloks som skal skjules i starten. Se følgende eksempel:
        <div id="del19" style="display:none">
        <tr><td>0</td></tr>
        </div>
        <div id="del22" style="display:none">
        <tr><td1</td></tr>
        </div>
Når jeg kører scriptet vises
0
1
Hvorfor bliver blokkene del19 og del22 ikke skjult?
Mvh Christian
Avatar billede fennec Nybegynder
16. november 2005 - 12:51 #1
Det er ikke lovligt at placere et div-tag der. Smid det direkte på tr-taget:

<tr id="del19" style="display:none">
  <td>0</td>
</tr>
<tr id="del22" style="display:none">
  <td>1</td>
</tr>
Avatar billede roenving Novice
16. november 2005 - 13:03 #2
-- og hvis man bruger vis/skjul på tabelrækker, skal man forberede sig på nogle overraskelser i de forskellige browsere, hvis man 'bare' bruger tableRow.style.display = 'block'; !-)

-- for nogle browsere tager i det stykke css2 alvorligt og forlanger, at der bruges: tableRow.style.display = 'table-row'; hvilket slet ikke anerkendes af IE ...
Avatar billede fennec Nybegynder
16. november 2005 - 13:17 #3
roenving >>
Ved du om man kan snyde den eller skal man til at lave et browser tjek??
Avatar billede roenving Novice
16. november 2005 - 13:25 #4
Jeg har ikke fundet på noget bedre end browser-check ...

-- men det er jo ovenikøbet sådan, at de browsere, der i dag anerkender css2 i tidligere udgaver ikke anerkendte det ,-(

-- så hvis man kunne finde en tingest, der kunne aflæses og som var synkron i indførelsestidspunkt, ville man kunne lave et rimeligt intelligent check, men jeg er ikke kommet på noget ...

Hrm, måske kunne man prøve at sætte den til table-row og så aflæse den, men jeg er ikke sikker på, hvordan alle browserne håndtere info, der ikke giver mening (css-rekommendationen siger klart, at renderingsmaskinen skal overse properties, den ikke kender, men det kan jo vente med at ske indtil den skal bruge informationen, så det kan godt være, at de alligevel opbevarer meningsløs info !-)
Avatar billede heyn Nybegynder
16. november 2005 - 13:32 #5
Jeg har mere end en <tr> i hver blok. Noget i stil med
  <div id="del19" style="display:none">
      <tr><td>tekst 1</td></tr>
      <tr><td>tekst 2</td></tr>
  </div>
Problemet er at jeg senere havde tænkt mig at udføre
  document.getElementById('del19').style.display = block;
Hvis jeg udfører style="display:none" på <tr> istedet for på <div> så må det vel blive noget i stil med
  <tr class="del19" style="display:none"><td>tekst 1</td></tr>
  <tr class="del19" style="display:none"><td>tekst 2</td></tr>
Hvordan gør jeg så begge <tr> synlige?
Hvornår må man så anvende display:none på <div>?
Christian
Avatar billede heyn Nybegynder
16. november 2005 - 13:35 #6
Hos mig er det helt sikkert at brugerne udelukkende anvender ei6 (i sjældne tilfælde mac). Christian
Avatar billede fennec Nybegynder
16. november 2005 - 13:36 #7
De skal have hver deres id:
<tr id="del19" style="display:none"><td>tekst 1</td></tr>
<tr id="del20" style="display:none"><td>tekst 2</td></tr>

document.getElementById('del19').style.display = block;
document.getElementById('del20').style.display = block;
Avatar billede roenving Novice
16. november 2005 - 13:39 #8
-- så kan du vel bare:

...
<tr>
  <td>
    <div id="del19" style="display:none;">
      <div>tekst 1</div>
      <div>tekst 2</div>
    </div></td>
</tr>
Avatar billede fennec Nybegynder
16. november 2005 - 13:44 #9
Skal vi tage lidt element regler også :o)

Der er regler for hvilke elementer der må placeres inde i andre elementer. Du må kun placere <tr> (samt få andre table relateret elementer) som direkte undernode til <table>. Det samme gør sig gældende i <tr>. Tilgængæld må du godt placere <div> i <td>

<table>
<div> <-- Ulovlig div
<tr>
  <div> <-- Ulovlig div
  <td><div></div></td> <-- Lovlig div
Avatar billede heyn Nybegynder
16. november 2005 - 13:47 #10
Netop - hvert deres id. Men hvis jeg har ca. 10 blokke der hver indeholder 5 <tr> bliver det mange document.getElementById i det script jeg skal lave, og desuden bliver det en meget kompliseret og lang funktion der skal vise og skjule blokkene. Kan man gøre noget der fungerer som en document.getElementByClass?
Christian
Avatar billede roenving Novice
16. november 2005 - 13:55 #11
Kan du ikke bare bruge noget, der ligner 16/11-2005 13:39:18, evt. med en tabel inde i diven (eller i stedet for diven !-)
Avatar billede heyn Nybegynder
16. november 2005 - 14:09 #12
OK - jeg kryber til korset.
Det blev en
  <tr id="del19" style="display:none;"><td>
      <table style="display:none;">
        <tr><td>tekst 1</td></tr>
        <tr><td>tekst 2</td></tr>
osv.
om hele molevitten.
Har du andre SVAR roenving?
Mvh Christian
Avatar billede roenving Novice
16. november 2005 - 14:12 #13
Det er vel fordi du har flere celler pr. række, du bruger en tabel, for ellers er den overflødig, og ovennævnte div-løsning nemmere at overskue og vedligeholde !-)

-- els velbekomme '-)
Avatar billede heyn Nybegynder
16. november 2005 - 14:47 #14
Nemlig! - Altså flere celler.
Mvh Christian
Avatar billede roenving Novice
16. november 2005 - 14:48 #15
-- og tak for point ;~}
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