[CSS, HTML, JS] Onload probleempje

Pagina: 1
Acties:
  • 117 views sinds 30-01-2008
  • Reageer

  • Garoth
  • Registratie: November 2002
  • Laatst online: 04-10-2024
Hee hallo.

Ik hoop dat ie deze keer eens in het goede forum staat, maar goed...

Ik ben bezig met een ASP applicatie, met daaronder een database. Ik heb een zoekpagina die daarna dynamisch een tabel met de resultaten opbouw. Deze tabel wil ik graag laten zien met een vasstaande header en scrollende body. Dit lukt op zich wel, met behulp van CSS, maar ik krijg de hele tijd een error die ik maar niet wegkrijg:
code:
1
2
Line: 0
Error: 'TableDiv.ScrollTop' is Null or not an object


En hierna doet ie alles wat ie hoort te doen. Ik heb echt geen idee waar dit vandaan komt, dus misschien kan een van jullie helpen? Hierbij de relevante code:

search.asp:
code:
1
<BODY onload="TableDiv=document.getElementById('tblDiv')">


stylesheet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
div#tblDiv {
  position: absolute;
  top: 200px;
  width: 100%;
  height: 60%;
  overflow: auto;
  }


thead th {
  text-align: center;
  background-color: red;
  color: white;
  position:relative;
  top : expression(TableDiv.scrollTop-2);
  heigth : 25px;
  z-index : 20;
}


Verder heb ik de table in een div staan, met als id tblDiv. Ik heb geen idee waarom hij hierop nekt, maar ik hoop dat jullie iets zien wat fout zit, of anders iets weten om de foutmelding te onderscheppen. Alle functionaliteit doet het namelijk, dus dat is het probleem niet.

Mochten jullie meer info nodig hebben, schreeuw maar...

Alvast bedankt!

Grtz

G

Als blikken konden doden, waarom doen ze er dan erwten in?


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Omdat de scrollTop nog niet bekend is op het moment van laden. Die css zul je dus ook pas toe moeten passen na de onload :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:45

gorgi_19

Kruimeltjes zijn weer op :9

Garoth schreef op dinsdag 21 december 2004 @ 15:21:
Hee hallo.

Ik hoop dat ie deze keer eens in het goede forum staat, maar goed...
Helaas; clientside probleem, dus hoort het in Webdesign & Graphics :)

>> Webdesign & Graphics

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Garoth
  • Registratie: November 2002
  • Laatst online: 04-10-2024
en hoe kan ik dan een CSS toepassen, na het laden? :?

Ik ben niet echt helemaal een held in CSS, maar dat kan toch niet meer nadat de pagina eenmaal geladen is?
En is de scrolltop niet bekend aangezien de tblDiv een absolute positie heeft?

Als blikken konden doden, waarom doen ze er dan erwten in?


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Je roept met de onload een JS functie aan:

code:
1
2
3
4
5
6
7
8
9
<script type="text/javascript">
  function doe()
  {
    TableDiv = document.getElementById("tblDiv");
    document.getElementById("id van tableheader").style.top = (TableDiv.scrollTop - 2) + "px";
  }
</script>

<body onload="doe()">

  • Garoth
  • Registratie: November 2002
  • Laatst online: 04-10-2024
Helaas, ook dat heeft geen nut, nu krijg ik alleen nog maar meer errors.
Het probleem ligt hem denk ik in het feit dat ik de results dynamisch opbouw op dezelfde pagina (search.asp).
Dus dan heeft ie de pagina al geladen, en bestaat de <div> nog niet, en dan gaat ie hem herladen, met de data van de vorige pagina. en die zegt dus dat de Div niet bestaat. Deze wordt namelijk ook dynamisch opgebouwd...

Als blikken konden doden, waarom doen ze er dan erwten in?


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:00
Wat bedoel je nou precies... ASP werkt toch net als PHP. Dus dat serverside een pagina wordt gegenereerd en deze naar de client wordt gestuurd. Die browser en je javascript hebben er verder geen flauw benul van dat de boel dynamisch is opgebouwd...

Mijn tip is dan btw om gewoon onder die div de functie aan te roepen:
code:
1
2
<div id="tblDiv" />
<script type="text/javascript">doe()</script>


Dan is je div altijd geladen als de funtie wordt aangeroepen. :)

[ Voor 19% gewijzigd door T-MOB op 22-12-2004 08:39 ]

Regeren is vooruitschuiven


  • Garoth
  • Registratie: November 2002
  • Laatst online: 04-10-2024
Thanx, dat hielp inderdaad.

Alleen flikkert ie nou een beetje, net alsof hij iedere keer opnieuw de top moet berekenen, maar goed, dan kijk ik wel hoe ik daar omheen kan bouwen...

Bedankt allemaal!

Grtz

G

Als blikken konden doden, waarom doen ze er dan erwten in?


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Dat is toch gewoon hetzelfde als onload :/

  • Garoth
  • Registratie: November 2002
  • Laatst online: 04-10-2024
Ik denk dat het komt omdat ik hem nu in de condities verwerkt heb in ASP. Dus als de div niet opgebouwd wordt, voert ie het niet uit.

Als je hem in de onload zet, voert ie hem uit ongeacht of de div opgebouwd is... Dat zal het probleem geweest zijn... B)

Als blikken konden doden, waarom doen ze er dan erwten in?


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:00
Garoth schreef op woensdag 22 december 2004 @ 09:36:
Ik denk dat het komt omdat ik hem nu in de condities verwerkt heb in ASP. Dus als de div niet opgebouwd wordt, voert ie het niet uit.

Als je hem in de onload zet, voert ie hem uit ongeacht of de div opgebouwd is... Dat zal het probleem geweest zijn... B)
Dan zou ik als ik jou was voor de oplossing van andré gaan. Die is vind ik veel netter. Het enige dat je hoeft te doen is in de functie eerst checken of div 'tblDiv' wel bestaat. Zoiets dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript">
  function doe()
  {
    var TableDiv;
    if (TableDiv = document.getElementById("tblDiv"))
    {
      document.getElementById("id van tableheader").style.top = (TableDiv.scrollTop - 2) + "px";
    }
  }
</script>

<body onload="doe()">

Regeren is vooruitschuiven

Pagina: 1