Toon posts:

[JS] getElementById doet zen werk niet

Pagina: 1
Acties:
  • 84 views sinds 30-01-2008

Verwijderd

Topicstarter
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
#blok { position:absolute; left:100px; top:100px; background-color:#006600; width:80px; height:40px;}

</style>
<script language="javascript" type="text/javascript">
for(var i = 0;i<6;i++)
{
    verschuifLinks();
    document.write('<div id="blok" onClick="show()"></div>');
}

function show()
{
    window.alert("hallo");
}


function verschuifLinks()
{   
     getObj('blok').style.left = x + 10; 
}

function getObj(elementID)
{
    return  document.getElementById(elementID);
}
</script>


wat er komt te staan in firefox javascript console
is het volgende "Fout: getObj("blok") has no properties Regel: 29"
Weet iemand wat ik verkeerd doe ik zit namelijk al een aardig poos te kijken maar kan het echt niet vinden

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

je weet dat een ID uniek moet zijn?

JavaScript:
1
2
3
4
function verschuifLinks()
{    
     getObj('blok').style.left = x + 10; 
}

Waar komt die x vandaan?
Verder verdient het aanbeveling een unit op te geven bij style-properties.

[ Voor 75% gewijzigd door crisp op 03-03-2005 10:39 ]

Intentionally left blank


Verwijderd

je blok bestaat nog niet eens op het moment dat je die verschuifLinks() aanroept, hij wordt in de regel erna pas gemaakt

Verwijderd

Topicstarter
die x hoorde daar idd niet maar dat is niet de oorzaak van de foutmelding.
Wat bedoel je eigenlijk met die unit in de style properties

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

in CSS zeg je ook:
Cascading Stylesheet:
1
#blok { left: 100px; }

px is de unit, en die dien je ook in scripting te gebruiken ;)

Intentionally left blank


Verwijderd

Topicstarter
Ik heb de fouten veranderd maar hij blijft de foutmelding geven
Fout: getObj("blok") has no properties Regel: 30

maar komt het nu omdat ik een for lus gebruik en de id niet aanpas dus met hetzelfde id voor elke neiuw div

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 03 maart 2005 @ 10:57:
Ik heb de fouten veranderd maar hij blijft de foutmelding geven
Fout: getObj("blok") has no properties Regel: 30

maar komt het nu omdat ik een for lus gebruik en de id niet aanpas dus met hetzelfde id voor elke neiuw div
Een id moet uniek zijn ja. Je zou het overigens wel kunnen benaderen als een Array volgens mij, dus iets als: getObj('blok')[0] ofzo. Maar dat zou ik even moeten checken om zeker te weten. Ik zou gewoon zorgen dat ID uniek is, daar is het namelijk voor bedoeld.

[ Voor 18% gewijzigd door RobIII op 03-03-2005 11:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
hoe zou ik die id in die style sheet kunnen kopelen dan ? als ik die id bijvoorbeeld kopel aan die teller
hoe zorg ik ervoor dat die style id ook gekoppeld blijft

Verwijderd

Topicstarter
dit is de verbeterde code. maar het probleem blijft zich voor doen

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
<style type="text/css">
#blok { position:absolute; left:100px; top:100px; background-color:#006600; width:80px; height:40px;}

</style>
<script language="javascript" type="text/javascript">
var pos = 0;

for(var i = 0;i<6;i++)
{
    document.write('<div id="blok" onClick="show()"></div>');
    verschuifLinks();
}

function show()
{
    window.alert("hallo");
}


function verschuifLinks()
{   
     pos += 10;
     getObj('blok').style.left = pos + "px"; 
}

function getObj(elementID)
{
    return  document.getElementById(elementID);
}

</script>

Verwijderd

is er al gezegd dat id's uniek moeten zijn 8)7

voor de style hang je er dan maar een class aan ofzo

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Om je ID's uniek te maken moet je even zoiets als onderstaande doen...
JavaScript:
1
2
3
4
5
for(var i = 0;i<6;i++)
{
    document.write('<div id="blok' + i + '" onClick="show()"></div>');
    verschuifLinks();
}

Verwijderd

Topicstarter
Verwijderd schreef op donderdag 03 maart 2005 @ 11:24:
is er al gezegd dat id's uniek moeten zijn 8)7
Grappig joh echt lachen

Verwijderd

Id's hoeven helemaal niet uniek te zijn!

Hij wil aan elke DIV element de style meegeven met behulp van #blok ..

Hier zijn bijvoorbeeld Id's ook niet uniek maar het werkt als een zonnetje ..

code:
1
2
3
4
5
6
7
8
9
<style type="text/css">
#blokje { color: #FF0000; }
</style>
<body>
<table id="blokje" border="2"><td >HOI</td></table><BR><BR>
<table id="blokje" border="2"><td >HOI</td></table><BR><BR>
<table id="blokje" border="2"><td >HOI</td></table><BR><BR>
<table id="blokje" border="2"><td >HOI</td></table><BR><BR>
</body>

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Id's moeten wel uniek zijn:
http://www.htmlhelp.com/reference/css/style-html.html#id
en de link van w3c:
http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2

[ Voor 35% gewijzigd door Rowanov op 03-03-2005 11:51 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 03 maart 2005 @ 11:47:
Id's hoeven helemaal niet uniek te zijn!
ID's moeten wel degelijk uniek zijn:
The id should be unique throughout the scope of the current document. If a document contains more than one object with the same identifier, the objects are exposed as a collection that can be referenced only in ordinal position.
Dat het werkt wil niet zeggen dat je gelijk hebt ;) Overigens klopt er van je HTML ook niet veel :Y) Waar zijn de <tr>'s ?

En waarom gebruikt de TS niet gewoon een class?

[ Voor 59% gewijzigd door RobIII op 03-03-2005 11:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Grappig joh echt lachen
En correct.

Verwijderd

lekkere instelling :r

het is anders wel de oorzaak van je probleem, dus je kan blijven lachen en stug volhouden aan repeterende id's en ene niet werkend geheel hebben of dit gewoon ter harte nemen en er echt wat aan doen

Verwijderd

Woudloper schreef op donderdag 03 maart 2005 @ 11:26:
Om je ID's uniek te maken moet je even zoiets als onderstaande doen...
JavaScript:
1
2
3
4
5
for(var i = 0;i<6;i++)
{
    document.write('<div id="blok' + i + '" onClick="show()"></div>');
    verschuifLinks();
}
In dit geval krijg je: 6 keer een DIV met als id's: blok1, blok2, blok3 enz...

Om aan elke blok weer die style te hangen moet de style dus ook meelopen? Wat dat is niet echt praktisch natuurlijk..

Of ga ik nu de spreekwoordelijke mist in? :o

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op donderdag 03 maart 2005 @ 11:54:
[...]
Of ga ik nu de spreekwoordelijke mist in? :o
Heb je de draad wel gelezen? Wel eens gehoord van classes in CSS?

Intentionally left blank


  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Ja, gebruik gewoon een class, ben je van het gezeur af.
offtopic:
alsof er stroop aan het topic zit

[ Voor 36% gewijzigd door Rowanov op 03-03-2005 11:56 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 03 maart 2005 @ 11:54:
[...]


In dit geval krijg je: 6 keer een DIV met als id's: blok1, blok2, blok3 enz...

Om aan elke blok weer die style te hangen moet de style dus ook meelopen? Wat dat is niet echt praktisch natuurlijk..

Of ga ik nu de spreekwoordelijke mist in? :o
Erg handig is dat niet, en ook niet de bedoeling nee. Daarom vragen meerdere mensen hier al waarom de TS geen class gebruikt...

/spuit 11 >:)

[ Voor 3% gewijzigd door RobIII op 03-03-2005 11:56 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
zoals pim zei "at your service" de class is er maar werkt nog steeds niet Fout: getObj("id") has no properties. Nog even excusses voor mijn gedrag daarnet stukje frustratie is daarvan het sleutelwoord en de oorzaak.


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
<style type="text/css">
.blok { position:absolute; left:100px; top:100px; background-color:#006600; width:20px; height:40px;}

</style>
<script language="javascript" type="text/javascript">
var pos = 0;

for(var id = 0;id<6;id++)
{
    document.write('<div class="blok" id="blok' + id + '"  onClick="show()"></div>');
    verschuifLinks();
}

function show()
{
    window.alert("hallo");
}


function verschuifLinks()
{   
     pos += 10;
     getObj('id').style.left = pos + "px"; 
}

function getObj(elementID)
{
    return  document.getElementById(elementID);
}

</script>

Verwijderd

op regel 23 doe je:

JavaScript:
1
getObj('id')


ik zie nergens een object met het id 'id' wat waarschijnlijk zowiezo een slecht plan zou zijn om dat het een gereserveerde term is. Id's of classnames als 'class' 'html' 'body' enz. is mi vragen om problemen.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 14:06

Pelle

🚴‍♂️

He, kap eens met de mensen afzeiken die jou proberen te helpen :/

Verwijderd

Topicstarter
Pelle schreef op donderdag 03 maart 2005 @ 12:31:
[...]


He, kap eens met de mensen afzeiken die jou proberen te helpen :/
ik heb mijn excuses toch al aangeboden wel scherp blijven anders wordt dat em niet vandaag

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 14:06

Pelle

🚴‍♂️

wel scherp blijven anders wordt dat em niet vandaag
Gaan we nog bijdehand lopen doen ook? Gefrustreerd of niet, als we zo gaan doen dan trek ik toch echt aan het langst eind...

Verwijderd

Verwijderd schreef op donderdag 03 maart 2005 @ 12:07:
op regel 23 doe je:

JavaScript:
1
getObj('id')


ik zie nergens een object met het id 'id' wat waarschijnlijk zowiezo een slecht plan zou zijn om dat het een gereserveerde term is. Id's of classnames als 'class' 'html' 'body' enz. is mi vragen om problemen.
Das waaarr ...

Ik heb net pauze gehad trouwens .. lekkere salami gehad! Maar de HAMvraag is nu natuurlijk hoe de TS nu naar de DIV'jes moet gaan verwijzen.. Aangezien de ID telkens veranderd..

Verwijderd

Je kunt pas de div element krijgen dmv document.getElementById() wanneer de pagina in zijn geheel is geladen.

In de <body onload="functienaam"> kun je vervolgens verschuifLinks() aanroepen.

Verwijderd

Topicstarter
Pelle schreef op donderdag 03 maart 2005 @ 12:35:
[...]

Gaan we nog bijdehand lopen doen ook? Gefrustreerd of niet, als we zo gaan doen dan trek ik toch echt aan het langst eind...
you rock

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 14:06

Pelle

🚴‍♂️

Pagina: 1

Dit topic is gesloten.