16. november 2005 - 12:45Der 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
-- 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 ...
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 !-)
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
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
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
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
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 !-)
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.