[javascript / DOM] DIV resized niet tijden DOM manipulatie

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Ik heb een javascript programma'tje geschreven die een zogenaamde "knockout-table" genereert. Een voorbeeld van een dergelijke tabel is: http://yozh.org/images/setable.jpg

Deze tabel bouw ik recursief op met behulp van een reeks DIV elementen. De parent DIV van deze tabel = <div id="knockoutTable">

Mijn javascript zal dus de DOM manipuleren en steeds nieuwe DIV elementen creeeren en aan zijn parent-DIV hangen. De DIV structuur wordt prachtig opgebouwd en werkt perfect.

Het probleem is dat de afmetingen van de <div id="knockoutTable"> en <div id="knockoutContainer"> niet aangepast. Dus wanneer ik een Button toevoeg aan de knockoutContainer, komt deze niet onderaan mijn tabel terecht, maar eerder tussen de knockout-table. Alle afmetingen zijn relatief (CSS: height: ...%; width: ...%; position="relative")

Waarschijnlijk komt dit omdat de <div id="knockoutContainer"> reeds is opgebouwd en dus na het manipuleren niet meer opnieuw gerendered wordt. Bestaat er een workaround voor dit probleem. Ik heb ook eens gekeken naar JavaScript libraries (prototype), maar echt specifiek over dit probleem heb ik niet veel teruggevonden.

De initiële HTML pagina is de volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
...
<body>

<!-- container with knockout-table + buttons + ... -->
<div id="knockoutContainer">    
    <!-- container for knockout-table -->
    <div id="knockoutTable">
    
    </div>    
</div>

</body>
</html>


In de body onload() roep ik dan mijn JavaScript functie op die de DOM manipuleert op deze manier:
code:
1
<body onload="generateTable(4, document.getElementById('knockoutTable'));">


Het resultaat is echter dit:
(DIV id="knockoutContainer" heeft een zwarte rand, DIV id="knockoutTable" heeft een blauwe rand. Deze twee DIV's zie je helemaal bovenaan het scherm opeen geplakt). Ik zou dus willen dat deze 2 DIV's mooi rond de knockout-table komen.

Afbeeldingslocatie: http://img33.imageshack.us/img33/9059/knockouttable.jpg

Ik heb al geprobeerd om de <DIV id=knockoutTable> volledig te verwijderen en dan opnieuw toe te voegen, maar dit helpt dus niet.

Hieronder vind je nogmaals de volledige CSS:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@charset "utf-8";

td {    
    vertical-align:middle;
    text-align: center;
}

#knockoutContainer {    
    border: solid; black;1px;
    height: auto;
}

#knockoutTable {    
    width: 100%;
    height: 100%;
    border: solid 1px blue;
}

.left {
    border:solid;
    border-color:red;
    border-width:1px;
    float:left;
    width:80%;
    height:50%;
    position:relative;
}

.right {
    border:solid;
    border-color:green;
    border-width:1px;
    float:left;
    width:80%;
    height:50%;
    position:relative
}

.node {
    border:solid; 
    border-color:blue; 
    border-width:1px; 
    float:right; 
    width:20%; 
    height:100%; 
    position:relative;
    font-size:8px;  
}

[ Voor 3% gewijzigd door Feyd-Rautha op 30-05-2009 09:15 ]

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

  • Pkunk
  • Registratie: December 2003
  • Laatst online: 11-09 17:52
Ik zie floats. Worden die gecleared? Voeg eens overflow:hidden toe aan de containers.

[ Voor 40% gewijzigd door Pkunk op 30-05-2009 09:50 ]

Hallo met Tim


Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Inderdaad, met de overflow:hidden werkt het perfect. Eens opzoeken wat die overflow:hidden precies betekend.
Bedankt !

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 20-09 00:16

Matis

Rubber Rocket

ik zie ook wel wat inconsistentie in je definities:

Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
#knockoutContainer {    
    border: solid; black;1px; /*met ; er tussen verder klopt de volgorde ook niet helemaal*/
    height: auto;
}

#knockoutTable {    
    width: 100%;
    height: 100%;
    border: solid 1px blue; /*zonder ;, geniet mijn voorkeur! */
}


Zoals je ook ziet, slikt de parser van de css opmaak hem ook niet!

Check deze pagina maar eens: http://www.w3schools.com/css/css_border.asp

Het is dus
Cascading Stylesheet:
1
2
border: border-width border-style border-color;
border: 1px solid black; /* jouw geval */


voglens de W3schools, en zij kunnen het weten ;)

[ Voor 38% gewijzigd door Matis op 30-05-2009 10:04 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:22

crisp

Devver

Pixelated

Matis schreef op zaterdag 30 mei 2009 @ 10:01:
[...]
voglens de W3schools, en zij kunnen het weten ;)
Sinds wanneer?

Check de specificatie:
'border'
Value: [ <border-width> || <border-style> || <'border-top-color'> ] | inherit
en
A double bar (||) separates two or more options: one or more of them must occur, in any order.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 20-09 00:16

Matis

Rubber Rocket

Why so serious :)
en
Het ging me meer over de consistentie, en natuurlijk kunnen ze in elke volgorde voorkomen, maar ik raadde de TS aan om één volgorde te gebruiken. En zo staan ze zelf op de site. Nja was gewoon een tip :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:22

crisp

Devver

Pixelated

Omdat veel mensen lijken te denken dat w3schools.com gelieerd is aan het W3C hetgeen absoluut niet het geval is. Het is een redelijke referentie site maar af en toe slaan ze ook de plank wel eens mis ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 20-09 00:16

Matis

Rubber Rocket

crisp schreef op zaterdag 30 mei 2009 @ 19:28:
[...]

Omdat veel mensen lijken te denken dat w3schools.com gelieerd is aan het W3C hetgeen absoluut niet het geval is. Het is een redelijke referentie site maar af en toe slaan ze ook de plank wel eens mis ;)
D'accord, Het hele probleem is gewoon dat het internet verziek is met slechte voorbeelden en helaas zien beginners daardoor vaak door de bomen het bos niet meer. :(

If money talks then I'm a mime
If time is money then I'm out of time

Pagina: 1