Avatar billede walker Nybegynder
23. april 2004 - 18:00 Der er 10 kommentarer og
1 løsning

Padding i javascript Tabel elementer.

Hej
Jeg sidder og er ved at fuske lidt med javascript elementer. dvs. elementer skabt vha. document.createElement.
Det jeg forsøger er at lave en tabel (T2), inde i en anden tabel (T1). (T1 er den ydre tabel).
Bægge tabeller sætter jeg så følgende attributter og styles på:

Tx.setAttribute("cellpadding", "0px");
Tx.setAttribute("cellspacing", "0px");
Tx.style.borderCollapse = "collapse";
Tx.setAttribute("border", "0px");

når jeg så sætter størrelsen til 100px * 20px på bægge tabeller, skulle T1 jo faktisk være 100% dækket af T2... men det er den ikke. Det er som om der er en padding på 1px helevejen rundt om T2.
Hvordan fjerner jeg den??

NB. Hvis jeg laver nøjagtig det samme i HTML, blir der ingen kant...

På forhånd tak, og håber i forstår hvad jeg skriver ;)
Walker
Avatar billede olebole Juniormester
23. april 2004 - 18:05 #1
<ole>

Kan du ikke lave et eksempel og lægge en URL til det. Det tror jeg, vi kommer længere med  :)

/mvh
</bole>
Avatar billede roenving Novice
23. april 2004 - 18:06 #2
-- har du element-hierarkiet i orden ?-)
Avatar billede walker Nybegynder
23. april 2004 - 18:13 #3
hmm... har faktisk slet ikke noget sted at smide det op... men jeg kan lige paste noget kode... :

---------------------------------------------------------<<<<
// Konstruerer T1
T1 = document.createElement("TABLE");
T1_TB = document.createElement("TBODY");
T1_TR = document.createElement("TR");
T1_TD = document.createElement("TD");
T1.appendChild(T1_TB);
T1_TB.appendChild(T1_TR);
T1_TR.appendChild(T1_TD);
// Sætter Attributter
T1.setAttribute("cellpadding", "0px");
T1.setAttribute("cellspacing", "0px");
T1.setAttribute("border", "0px");
T1.style.borderCollapse = "collapse";
T1.style.width = "100px";
T1.style.height = "20px";

// Konstruerer T2
T2 = document.createElement("TABLE");
T2_TB = document.createElement("TBODY");
T2_TR = document.createElement("TR");
T2_TD = document.createElement("TD");
T2.appendChild(T2_TB);
T2_TB.appendChild(T2_TR);
T2_TR.appendChild(T2_TD);
// Sætter Attributter
T2.setAttribute("cellpadding", "0px");
T2.setAttribute("cellspacing", "0px");
T2.setAttribute("border", "0px");
T2.style.borderCollapse = "collapse";
T2.style.width = "100px";
T2.style.height = "20px";

//Kobminerer
T1.style.backgroundColor = "#ff0000";
T2.style.backgroundColor = "#00ff00";
T1_TD.appendChild(T2);
document.body.appendChild(T1);
---------------------------------------------------------<<<<

Har her farvet T1 rød og T2 grøn. Jeg burde jo så ikke kunne se noget rødt, da T2 gerne skulle fylde hele T1, men kan se at T1 automatisk udvidder sig til at fylde 102px...
Avatar billede olebole Juniormester
23. april 2004 - 18:23 #4
I stedet for at sætte de der gamle, slammede attributter, så sæt styles - enten på de enkelte celler, eller i et stylesheet. F.eks:
  T1_TD.style.padding = "0px";
Avatar billede walker Nybegynder
23. april 2004 - 18:28 #5
hmm, det ændrer ikke noget... men grunden til jeg har brugt setAttribute på cellpadding og cellspacing, er at jeg har oplevet i andre situationer, det ikke virkede når jeg brugte styles... måske en mine egne fejl...
Anyway, det virker stadig ikke... :S
Avatar billede olebole Juniormester
23. april 2004 - 18:32 #6
Så laver du en eller flere fejl. det fungerer helt fint her  :)
PS: Husk at lægge indhold i din inderste celle - man kan ikke have celler uden indhold
Avatar billede roenving Novice
23. april 2004 - 18:34 #7
Enten - eller:

<style type="text/css">
td{margin:0px;border:0px;padding:0px;}
</style>

T1_TD.style.padding = "0px";
Avatar billede olebole Juniormester
23. april 2004 - 18:35 #8
Det her funker fint:

<script type="text/JavaScript">
// Konstruerer T1
T1 = document.createElement("TABLE");
T1_TB = document.createElement("TBODY");
T1_TR = document.createElement("TR");
T1_TD = document.createElement("TD");
T1_TD.style.padding = "0px";
T1.appendChild(T1_TB);
T1_TB.appendChild(T1_TR);
T1_TR.appendChild(T1_TD);
// Sætter Attributter
T1.style.borderCollapse = "collapse";
T1.style.width = "100px";
T1.style.height = "20px";

// Konstruerer T2
T2 = document.createElement("TABLE");
T2_TB = document.createElement("TBODY");
T2_TR = document.createElement("TR");
T2_TD = document.createElement("TD");
TXT2 = document.createTextNode("bla");
T2_TD.appendChild(TXT2);
T2.appendChild(T2_TB);
T2_TB.appendChild(T2_TR);
T2_TR.appendChild(T2_TD);
// Sætter Attributter
T2.style.borderCollapse = "collapse";
T2.style.width = "100px";
T2.style.height = "20px";

//Kobminerer
T1.style.backgroundColor = "#ff0000";
T2.style.backgroundColor = "#00ff00";
T1_TD.appendChild(T2);
document.body.appendChild(T1);
</script>
Avatar billede walker Nybegynder
23. april 2004 - 18:39 #9
ok :P det hjalp... Mange tak.
Grunden til den kom, var at jeg havde godt nok fjernet alle paddings fra tabellerne, men ikke fra TD'en. TD'er har ingen padding (default) i HTML, eller også arver de ihvertfald fra tabellen. Det har de når du opretter dem i js... og der lå fejlen så.
MANGE TAK :P

Walker
Avatar billede walker Nybegynder
23. april 2004 - 18:40 #10
smider i lige et svar? :P
Avatar billede olebole Juniormester
23. april 2004 - 18:50 #11
svar  :)
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