Avatar billede mik28 Seniormester
18. oktober 2011 - 11:50 Der er 17 kommentarer og
1 løsning

Problem med at vise en <tr> i IE

Hej Eksperter

Jeg har en tabel hvor der er noget logik omkring hvad der skal vises hvornår. Jeg opdager nu til min skræk at følgende ikke virker i IE. Hvordan løser jeg det?

document.getElementById("entablerowsomskalvises").style.display="table-row";
Avatar billede kalp Novice
18. oktober 2011 - 12:23 #1
display = "block"
Avatar billede kalp Novice
18. oktober 2011 - 12:37 #2
Min tanke er i øvrigt at table-row ikke er supporteret af IE.. Der var i hvert fald en lang periode hvor det ikke var:)

Nu skriver jeg "block" i mit bud, da den jo nok virker, men om du grafisk får det du ønsker ved jeg ikke.
Men så kan du evt. se på andre alternativer.

og det er selvfølgelig en god idé at få verificeret det jeg siger - supporteret eller ikke supporteret.
Avatar billede mik28 Seniormester
18. oktober 2011 - 13:19 #3
Jeg prøver lige med block. Problemet er lidt at jeg har valgt at bruge en tabel da det reelt er tabeldata jeg skal vise. Alternativt skal jeg sætte det op i divs.
Avatar billede mik28 Seniormester
18. oktober 2011 - 13:23 #4
Block virker i IE men ikke i firefox
Avatar billede kalp Novice
18. oktober 2011 - 13:35 #5
må jeg se din kode? for det skal egentlig virke i FF også:)

Du kan se min test kode her hvor jeg prøver med både block og inline block.

<html>
<body>
<label onclick='document.getElementById("one").style.display="inline-block"; '>inline-block one</label><br />
<label onclick='document.getElementById("two").style.display="block"; '>block two</label>
<table style="height:100px;width:200px;border:1px solid green">
<tr id="one" style="display:none;"><td>one</td></tr>
<tr id="two" style="display:none;"><td>two</td></tr>
</table>
</body>
</html>
Avatar billede kalp Novice
18. oktober 2011 - 13:38 #6
hvilket doc type benytter du? kan selvfølgelig være derfor:D
Avatar billede mik28 Seniormester
18. oktober 2011 - 15:51 #7
Jeg endte med at identificerer brugerens browser og så bruge table-row hvis det ikke er IE og block hvis det er. Det virker som det skal.

Tak for hjælpen
Avatar billede olebole Juniormester
18. oktober 2011 - 18:32 #8
<ole>

@kalp: Nej, display:block virker ikke på TR elementer i Firefox. Det gør det heller ikke i andre standard compliant browsere (Opera, Safari, Chrome).

Det gør til gengæld display:table-row - og den fungerer også i IE9

/mvh
</bole>
Avatar billede mik28 Seniormester
18. oktober 2011 - 18:55 #9
det vil altså sige at hvis det er IE9 så er det display:table-row jeg skal bruge ellers block for tidligere versioner af exploder
Avatar billede olebole Juniormester
18. oktober 2011 - 19:05 #10
Ja, så burde det fungere. Og så vidt jeg husker, skal vi ret langt tilbage, før vi rammer en Firefox version, der ikke forstod table-row
Avatar billede olebole Juniormester
18. oktober 2011 - 19:10 #11
block og inlene-block fungerer også i IE9, men der er ingen grund til at bruge andet end standarden til standard compliant browser versioner  =)

Til gengæld virker block eller inline-block som sagt ikke i andre standard compliant browsere end IE9. Altså:

block til IE fra og med version 8 og ned
table-row til resten
Avatar billede kalp Novice
19. oktober 2011 - 10:58 #12
Det er så mystisk at mit HTML eksempel virker for mig i FF, Chrome, Safari og IE fra 5.5 og op.

og det er både block og inline-block der fungerer.

Mine browsere må være defekte:)
Avatar billede olebole Juniormester
19. oktober 2011 - 17:38 #13
Det skal jeg ikke kunne sige, men dit eksempel er i hvertfald svært defekt. Hvis du prøvede med en realistisk tabel, ville du have fået et helt andet resultat - og måske ikke været så mystificeret.

Tabeller er beregnet til at opstille tabulerede data med. Derfor giver det naturligvis ikke mening at teste på en tabel med kun én kolonne. Prøv i stedet det her (reload browseren mellem de enkelte klik):


<style type="text/css">
td {
    border: 1px solid blue;
}
</style>

<label onclick='document.getElementById("two").style.display="inline-block"; '>inline-block two</label><br>
<label onclick='document.getElementById("two").style.display="block"; '>block two</label><br>
<label onclick='document.getElementById("two").style.display="table-row"; '>table-row two</label>
<table style="height:100px;width:200px;border:1px solid green">
<tbody>
    <tr id="one">
        <td>one</td>
        <td>hep</td>
    </tr>
    <tr id="two" style="display:none;">
        <td>two</td>
        <td>hey</td>
    </tr>
</tbody>
</table>


block og inline-block virker - udover i ganske få og helt specielle tilfælde - ikke i andet end IE.

Det, vi observerer, er ikke naturen i sig selv - men naturen udsat for vores måde at spørge på.
- Werner Heisenberg
Avatar billede jokkejensen Novice
19. oktober 2011 - 19:18 #14
@Ole >nu med citater ? haha

En anden mulighed, hvis man da absolut skal fucke en tabel rækkes fødte egenskaber op i de forskellige browsere, og man ikke har tid til at lege med sådanne, bruge jquery:

$("tr").hide();
$("tr").show();

Venligst
/J
Avatar billede kalp Novice
20. oktober 2011 - 01:12 #15
olebole >> ahh okay så er vi egentlig enige..
men da du skrev at det ikke virker, så forstår jeg det jo som om at der slet ikke sker noget hvis man benytter "block" og "inline-block".. men det giver selvfølgelig ikke nødvendigvis det ønskede resultat:)
Avatar billede olebole Juniormester
20. oktober 2011 - 01:52 #16
@jokkejensen: Ja, og når man ser sig omkring, skulle man jo ikke tro, det citat er små 100 år gammelt  =)

Ofte kan libraries spare tid, men for at bruge den begrundelse for at anvende jQuery til dette job, skal man godt nok være doven  *o)
Avatar billede kalp Novice
20. oktober 2011 - 10:22 #17
Hvis man i forvejen benytter jQuery, så ville jeg helt klart gøre, som jokkejensen foreslog.
Jeg synes ikke det har noget at gøre med at man er doven:)

men det er pænt overkill hvis man ikke benytter jQuery i sit projekt til andre formål.
Avatar billede olebole Juniormester
20. oktober 2011 - 19:22 #18
Jeg er af den opfattelse, at når man ikke vinder noget, er det ikke klogt at introducere afvikling af en bunke overflødig kode. Om du så vil kalde det dovenskab eller ej ... tja  =)
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