Toon posts:

[js] document.getElementById geeft geen object

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik gebruik onderstaand stukje voor een menu en wil dynamisch bij de initialisatie alle hoogtes vast leggen van de knoppen, maar dat gaat niet zoals ik wil ;)
In het for lusje kan ik opzich wel de waardes laten afdrukke van button[i], maar als ik de waarde van target laat afdrukken dan geeftie null, en ja ik heb netjes vijf maal een <div></div> aangemaakt met de juiste id's. Ik heb geen flauw idee waardoor dit fout gaat??? De fout melding die ik krijg is: "object verwacht", logisch aangezien target null geeft...

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function makeArray(n){
    this.lenght = n ;
    return this;
}

var button = new Array ("num_a", "num_b", "num_c", "num_d", "num_e");
var hoogte = new makeArray(button.length);
for (var i = 0; i < button.length; i++){
     var target = document.getElementById(button[i]);
     hoogte[i] = target.style.top;
}

[ Voor 7% gewijzigd door Verwijderd op 06-03-2003 14:39 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

- verander de naam button eens in wat anders, button is een bestaand element
- haal de underscores eens weg uit de namen
- Je voert het toch wel uit onload he? :) De elementen bestaan pas als ze geladen zijn.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:36

crisp

Devver

Pixelated

Bosmonster schreef op 06 March 2003 @ 14:42:
- verander de naam button eens in wat anders, button is een bestaand element
- haal de underscores eens weg uit de namen
- Je voert het toch wel uit onload he? :) De elementen bestaan pas als ze geladen zijn.
-De naam button is geen reserved word voor zover ik weet en ook geen standaard property van het window object, dus daar voorzie ik geen problemen mee.
-underscore mag gewoon in een id: http://www.w3.org/TR/html401/types.html#type-name
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
blijft optie 3 over als mogelijke oorzaak :)

Intentionally left blank


Verwijderd

Topicstarter
Crisp heeft gelijk dat Bosmonster gelijk heeft met punt drie. Normaal zet ik gewoon buiten een functie bovenaan mn variabele die ik overal nodig heb, nu had ik daaronder dat for lusje er ook ingezet dat werkte dus niet. Nu heb ik het forlusje in een functie gezet en met een onload roep ik die aan en dat werkt idd perfect...

thnx

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

JavaScript:
1
    this.lenght = n ;
is het een koppiepeest uit je code? Daar staat iig lenght ipv length :)

[ Voor 6% gewijzigd door .oisyn op 06-03-2003 16:02 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

sowieso snap ik dit nooit in object-definities:

return this;

:? Nogal overbodig :P

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
JavaScript:
1
2
3
4
5
6
7
8
9
var button = new Array ("num_a", "num_b", "num_c", "num_d", "num_e");

var hoogte = new Array(button.length);

for (var i = 0; i < button.length; i++)
{
     var target = document.getElementById(button[i]);
     hoogte[i] = target.style.top;
}
werkt toch precies hetzelfde :? Dan is die functie namelijk nogal overbodig :)

Verwijderd

Topicstarter
Jullie hebben allemaal gelijk :D

Ik heb het eruit gesloopt, en het begin is er, het is nog niet netjes geoptimaliseerd, maar werkt op dit moment in IE5+, NN7, Opera7.01, Mozilla 1.3b

Geïnteresseerd? ->menuutje

O ja voor ik het vergeet: het is nog niet geheel bug vrij...

[ Voor 19% gewijzigd door Verwijderd op 06-03-2003 17:16 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

code:
1
var hoogte = new Array(button.length);


Als dit al zou werken maakte die de array 1 te kort :) Maar het werkt niet, want dit maakt een array met als eerste waarde [0] button.length. Je kunt een Array niet initialiseren op een bepaalde waarde, vandaar Sooterd zijn functie. Het is echter ook helemaal niet nodig in Javascript, je kunt ad random indices aanmaken in JS-Arrays.

Verwijderd

Topicstarter
Hmm daar zit wat in ;-) Ik heb die functie er weer tussen gezet, wat variabele gewijzigid, en het lijkt er op dat hij plusminus bug vrij is. Heeft iemand nog op of aanmerkingen???

menuutje

[ Voor 4% gewijzigd door Verwijderd op 07-03-2003 10:21 ]

Pagina: 1