Avatar billede themepark Nybegynder
13. oktober 2003 - 18:24 Der er 23 kommentarer

Manglende sammentrækning af tabel

Jeg har lavet følgende kode:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM>
<TABLE BORDER=1>
<TR>
<TD ALIGN="Center">
<INPUT TYPE="Text" VALUE=2 STYLE="z-index: 0; width: 1em; position: relative;">
<INPUT TYPE="Text" VALUE=1 STYLE="z-index: 1; width: 1em; position: relative;">
</TD>
</TR>
</TABLE>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
document.forms[0].elements[0].style.width=200+'px'
document.forms[0].elements[0].style.height=200+'px'
document.forms[0].elements[1].style.left=-(document.forms[0].elements[1].offsetLeft-document.forms[0].elements[0].offsetLeft)
document.forms[0].elements[1].style.top=-(document.forms[0].elements[1].offsetTop-document.forms[0].elements[0].offsetTop)
</SCRIPT>
</BODY>
</HTML>

men problemet er at der bliver noget tomrum til højre i tabelcellen.

Jeg regnede med at det skyldtes at de 2 felter på et tidspunkt står side om side med hinanden, udvider tabellen, men at tabellen ikke trækker sig sammen. Derfor lavede jeg det lidt om til følgende:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM>
<TABLE BORDER=1>
<TR>
<TD ALIGN="Center">
<INPUT TYPE="Text" VALUE=1 STYLE="z-index: 1; width: 1em; position: relative;">
<INPUT TYPE="Text" VALUE=2 STYLE="z-index: 0; width: 1em; position: relative;">
</TD>
</TR>
</TABLE>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
document.forms[0].elements[1].style.left=-(document.forms[0].elements[1].offsetLeft-document.forms[0].elements[0].offsetLeft)
document.forms[0].elements[1].style.width=200+'px'
document.forms[0].elements[1].style.height=200+'px'
</SCRIPT>
</BODY>
</HTML>

Her placerer jeg de 2 INPUT felter ovenpå hinanden, inden jeg forstørrer den ene af dem. Dermed troede jeg problemet var løst, men jeg får stadig noget tomrum i cellen :(

Hvorfor og hvordan løser jeg det problem?
Avatar billede dawin_dk Nybegynder
13. oktober 2003 - 18:32 #1
sæt størrelsen på den celle du smider dem i ?
Avatar billede themepark Nybegynder
13. oktober 2003 - 18:36 #2
Nej, fordi jeg kender ikke størrelsen på de INPUT felter, jeg smider ind i dem. Ovenstående er blot et lille eksempel.
Avatar billede Slater Ekspert
13. oktober 2003 - 18:38 #3
hvad er i det hele taget meningen med at lave en table, når der kun er én TD?
Avatar billede themepark Nybegynder
13. oktober 2003 - 18:40 #4
Prøv nu lige at læse hvad jeg skriver...Ovenstående er blot et lille eksempel :)
Avatar billede jacobsdk Nybegynder
13. oktober 2003 - 20:42 #5
Jeg tror du har ret i problemet ligger i at de står ved siden af hinanden. Jeg tror sågar at feltet stadig står der - såvidt angår cellen, efter du har flyttet den. Det hjælper i hvert fald at flyttet feltet ud af tabellen, som:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM>
<TABLE BORDER=1 >
<TR>
<TD ALIGN="Center">
<INPUT TYPE="Text" VALUE=2 STYLE="z-index: 0; width: 1em; position: relative;">

</TD>
</TR>
</TABLE>
<INPUT TYPE="Text" VALUE=1 STYLE="z-index: 1; width: 1em; position: relative;">
</FORM>
<SCRIPT LANGUAGE="JavaScript">
document.forms[0].elements[0].style.width=200+'px'
document.forms[0].elements[0].style.height=200+'px'
document.forms[0].elements[1].style.left=-(document.forms[0].elements[1].offsetLeft-document.forms[0].elements[0].offsetLeft)
document.forms[0].elements[1].style.top=-(document.forms[0].elements[1].offsetTop-document.forms[0].elements[0].offsetTop)
</SCRIPT>
</BODY>
</HTML>

Er det en løsning du kan bruge?

Jacob
Avatar billede olebole Juniormester
13. oktober 2003 - 21:57 #6
<ole>

Sæt _altid_ </td> 'op i røven' på sidste element i cellen - så sker det ikke. Ellers sker det altid  :)

<td>
  <input type="text" name="noget"></td>

Start-tag'et er det ligegyldigt, hvor står - men slut-tag'et er afgørende.

/mvh
</bole>
Avatar billede olebole Juniormester
13. oktober 2003 - 21:59 #7
... og det er ligegyldigt, om det er et billede, en knap, et input-felt, eller hvilket element, du kan finde på. Sådan er HTML bare  :)
Avatar billede olebole Juniormester
13. oktober 2003 - 22:05 #8
Lav for sjov denne fil:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<table cellspacing="0" cellpadding="0" border="1">
<tr>
    <td>OleBole
    </td>
</tr>
<tr>
    <td>OleBole</td>
</tr>
</table>

</body>
</html>

... og kast den i din IE-browser. Dobbelklik på det øverste navn og tryk Ctrl+C.
Gå nu over i NotePad og tryk Ctrl+V og se, hvor cursoren ender. Du fik et blank-tegn i slutningen af linien - ikke sandt?
Gør det samme med nederste navn ... hvad sker der så?  :)
/mvh
Avatar billede jacobsdk Nybegynder
13. oktober 2003 - 22:08 #9
Har du testet det, ole? Så nemt var det desværre ikke... (I hvert fald ikke i IE6)

Jacob
Avatar billede jacobsdk Nybegynder
13. oktober 2003 - 22:10 #10
Altså, du har sikkert ret mht. blanktegn etc., men det løser ikke problemet her...
Avatar billede olebole Juniormester
13. oktober 2003 - 22:43 #11
Nååhhh .... jamen, de er jo også lagt i 'position:relative'. Så er det egentlig utroligt, de ikke laver mere plads i siden  :)
Hvor er det helt præcict, du gerne vil placere de to felter? Jeg fatter ikke, hvad det er, du vil.
/mvh
Avatar billede olebole Juniormester
13. oktober 2003 - 23:01 #12
storbytossen >> Du må lige forklare lidt mere, så jeg ved, hvad du vil lave ... så skal jeg nok få det til at ske  ;o)
Avatar billede roenving Novice
14. oktober 2003 - 03:32 #13
Du har zq ret i noget af det du tager fat i, storbytossen ...

-- se lige resultatet her:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM>
<TABLE BORDER=1>
<TR>
<TD ALIGN="Center">
<INPUT TYPE="Text" VALUE=1 STYLE="z-index: 1; width: 1em; position: relative;">
<INPUT TYPE="Text" VALUE=2 STYLE="z-index: 0; width: 1em; position: relative;"></TD>
</TR>
</TABLE>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
document.forms[0].elements[1].style.left=-(document.forms[0].elements[1].offsetLeft-document.forms[0].elements[1].offsetLeft)
document.forms[0].elements[1].style.width=200+'px'
document.forms[0].elements[1].style.height=200+'px'
</SCRIPT>
</BODY>
</HTML>
Avatar billede olebole Juniormester
14. oktober 2003 - 03:43 #14
Det er ikke særlig god kode - prøv at se den i en browser ... ikke i den der browser-lignende ting, de kalder IE. Check i Mozilla/NS  ;o)
Avatar billede roenving Novice
14. oktober 2003 - 03:52 #15
Den flytter rundt på elementerne forskelligt, når man bruger IE og Gecko, men der afsættes åbenbart plads til elementet uanset hvilken maskine man bruger ...
Avatar billede olebole Juniormester
14. oktober 2003 - 03:55 #16
Ja, det ligger jo i CSS-standarden  ;o)
Avatar billede jacobsdk Nybegynder
14. oktober 2003 - 09:36 #17
Hallo... Som sagt det løses ved at flytte elementet helt ud af tabellen i første omgang - som jeg foreslog for 78 indlæg siden. Men det virker ikke i Mozilla, eller..?

Jacob
Avatar billede olebole Juniormester
14. oktober 2003 - 10:44 #18
Jamen, det kommer anpå, hvad det er, spørgeren præcist ønsker at gøre. Det har jeg endnu hverken gennemskuet - eller fået forklaret  :)
/mvh
Avatar billede themepark Nybegynder
14. oktober 2003 - 20:30 #19
olebole, du er sgu lidt FOR utålmodig :/ Jeg sidder jo ikke foran en computer 24 timer i døgnet og kan svare hver gang en skriver en kommentar ;)

Men okay jacobsdk, det fungerer jo fint med mit test eksempel, det du har foreslået, men jeg skal lige tjekke det i min rigtige kode, før jeg ved om det virker :)

roenving, jeg formoder du mener at jeg har ret i det med tomrummet, når du siger at jeg har fat i noget ;)

olebole, det der problem med </td>, som du nævner, har jeg faktisk tit stødt på, tit spurgt om herinde, og lige så tit fået nøjagtigt det svar med at </td> skal rykkes en linje op, så den kender jeg godt til :) Underlig fejl at give synes jeg, men det løser ikke problemet med tomrummet :)

Det jeg vil, i eksemplet med de 2 felter er ganske enkelt at forstørre den ene af de 2 felter til 200*200 pixels, og så få den anden på toppen af den første, således at den står i øverste venstre hjørne...og så selvfølgelig sådan at tabelcellen omslutter mit 200*200 pixels felt :)
Avatar billede olebole Juniormester
14. oktober 2003 - 23:36 #20
Nej, jeg er ikke spor utålmodig ... tværtimod. At gætte - uden at vide, hvad der er meningen med eksemplet - afspejler utålmodighed. Jeg udviser derimod tålmodighed og venter derfor gerne på at høre, hvad der præcis er meningen. Det er den eneste måde, hvorpå jeg kan komme med et relevant svar  :)

Er scriptet et udtryk for, du dynamisk vil kunne ændre på forholdene? Eller ønsker du blot at dimensionere og placere de to felter én gang for alle? Så kan det nemlig gøres i CSS alene - uden brug af scripting.
/mvh
Avatar billede themepark Nybegynder
14. oktober 2003 - 23:45 #21
Ja, men du rykker gentagne gange i løbet af et døgn for svar, det er altså ikke det jeg kalder tålmodighed :)

Det, jeg vil, er at dimensionere og placere dem én gang for alle. Dimensioneringen er jeg nødt til at gøre i JavaScript, da det beror på nogle beregninger, og problemet med selve placeringen er at på min rigtige side benytter disse 2 felter samme class fra et CSS script, den eneste forskel er størrelsen og placeringen.
Avatar billede olebole Juniormester
15. oktober 2003 - 00:00 #22
LoL-da ... hvis det faktum, at jeg pointerer overfor brugere - der gætter sig frem - at vi ikke kan komme med en relevant besvarelse uden at vide noget mere, er et problem for dig, trækker jeg mig.
Avatar billede themepark Nybegynder
15. oktober 2003 - 00:03 #23
Jeg har ikke sagt det er et problem, kommer blot med min kommentar :) Havde det været et problem, havde jeg jo ikke brugt smileys, vel? :)
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