Toon posts:

[JS] Obj has no properties

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil met een stukje javascript de display van een DIV veranderen. Je selecteerd een optie uit een select box en aan de hand daarvan word de ene DIV zichtbaar en de andere verdwijnt. Daar heb ik drie functies voor namelijk changeDiv, hideAll en getStyleObject. De laatste twee zijn goed maar de eerste geeft problemen.

JavaScript:
1
2
3
4
5
6
7
8
9
function changeDiv(objSelect,the_change)
{
  var the_id = objSelect.options[objSelect.selectedIndex].value;
  var the_style = getStyleObject(the_id);
  if (the_style != false)
  {
    the_style.display = the_change;
  }
}


Dit is het stukje form gedeelte. De id's van de DIV's hebben dezelfde naam de values van de opties van de selectbox.

HTML:
1
2
3
4
5
<select name="custom13data" id="select1" onChange="hideAll(); changeDiv(this,'block');"> 
            <option value=" " selected="selected">[ Select ]</option>
            <option value="optie1">Optie1</option>
            <option value="optie2">Optie2</option>
</select>


De melding die ik krijg is: objSelect.selectedIndex has no properties dus hij gaat bij de eerste regel al op z'n waffel.
Ik heb al vanalles geprobeerd, ook om het object waar het om gaat volledig te noemen (document.form.select1) maar het wil niet werken.

Ben al een dag bezig dus als iemand me kan verlichten zou ik hem/haar zeeeeeeeeer dankbaar zijn. :)

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
volgens mij moet je doen: objSelect.options.selectedIndex

overigens gewoon eerste hit bij google
(dit overigens niet om zout in je dag-zoekwerk wond te strooien ;))

[ Voor 67% gewijzigd door P.O. Box op 19-04-2007 10:30 ]


Verwijderd

Topicstarter
JavaScript:
1
2
3
4
5
6
7
8
9
function changeDiv(objSelect,the_change)
{
  var the_id = objSelect.options.selectedIndex;
  var the_style = getStyleObject(the_id);
  if (the_style != false)
  {
    the_style.display = the_change;
  }
}

Dan is het: objSelect.options has no properties

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
nou ja, het zou dan iig dit moeten zijn, maar dat gaat neem ik aan dan ook niet werken:
JavaScript:
1
var the_id = objSelect.options[objSelect.options.selectedIndex].value; 

[ Voor 64% gewijzigd door P.O. Box op 19-04-2007 10:48 ]


Verwijderd

Topicstarter
nee helaas :'( zelfde foutmelding

[ Voor 4% gewijzigd door Verwijderd op 19-04-2007 10:48 ]


  • Sappie
  • Registratie: September 2000
  • Laatst online: 18-11 20:27

Sappie

De Parasitaire Capaciteit!

Gebruik eens het name attribuut ipv de id.
edit:
Post ook eens je functie getStyleObject. Maakt die gebruik van getelementById? Post uberhaupt eens je hele form en de javascript functies die aangeroepen worden en je zelf gemaakt hebt. Nu ik de post goed lees is de andere zooi inderdaad wellicht minder interessant. Desalniettemin is het voor het overzicht alsnog nuttig.

[ Voor 103% gewijzigd door Sappie op 19-04-2007 10:52 ]

Specs | Audioscrobbler


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
als je alert(objSelect) doet aan het begin van je functie, krijg je dan wel een alert met [object] of krijg je een foutmelding? en als je dan alert(objSelect.type) doet?

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Sappie schreef op donderdag 19 april 2007 @ 10:48:
Gebruik eens het name attribuut ipv de id
het id attribuut wordt ook niet gebruikt.... er wordt "this" gebruikt...

Verwijderd

Topicstarter
met een alert(objSelect); komt de geselecteerde value inderdaad juist tevoorschijn. Met alert(objSelect.type); krijg ik "undefined".

  • Wizz15
  • Registratie: Januari 2004
  • Laatst online: 26-10-2022
Ik heb het hier even geprobeerd (maar dan wel hideAll() eruit gesloopt) en hier werkt alles gewoon in Firefox en IE... Misschien doet hideAll iets met het object dat het aanroept?

en overigens is

JavaScript:
1
    var the_id = objSelect.options[objSelect.selectedIndex].value;


gewoon goed.

PSN: RikBruil | BFBC2 stats


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Wizz15 > ja, dat dacht ik ook... het kan allebei.... maar omdat het niet werkte ...

denk dat Wizz15 gelijk heeft dat er ergens in hideAll iets gebeurt... want dit werkt gewoon:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<HTML>
<HEAD>
<script language="JavaScript">
function changeDiv(objSelect,the_change)
{
  var the_id = objSelect.options.selectedIndex;
  alert(the_id);
}
</script>
</HEAD>

<BODY>
<select name="custom13data" id="select1" onChange="changeDiv(this,'block');">
            <option value=" " selected="selected">[ Select ]</option>
            <option value="optie1">Optie1</option>
            <option value="optie2">Optie2</option>
</select>
</BODY>
</HTML>

Verwijderd

Topicstarter
JavaScript:
1
2
3
4
5
function hideAll()
{
   changeDiv("optie1","none");
   changeDiv("optie2","none");
}


Dit staat direct onder de functie changeDiv. Zonder deze functie aan te roepen werkt het idd. wtf?

  • Sappie
  • Registratie: September 2000
  • Laatst online: 18-11 20:27

Sappie

De Parasitaire Capaciteit!

Als je dan ook al je code had gepost, waren we er waarschijnlijk al lang uit geweest :)

edit:
Ik dacht ff dat edwardvb de TS was, maargoed mijn punt blijft

btw. Je geeft in die edit een value mee (van een option zelfs). Hoe kun je dat nou vergelijken met een id? Logisch dat dat niet gaat werken.

[ Voor 61% gewijzigd door Sappie op 19-04-2007 11:02 ]

Specs | Audioscrobbler


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Sinds wanneer is "optie1" een select-element?

Intentionally left blank


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Verwijderd schreef op donderdag 19 april 2007 @ 10:58:
JavaScript:
1
2
3
4
5
function hideAll()
{
   changeDiv("optie1","none");
   changeDiv("optie2","none");
}


Dit staat direct onder de functie changeDiv. Zonder deze functie aan te roepen werkt het idd. wtf?
bij die changeDiv aanroepen geef je als eerste argument geen object mee, maar een string... als je daar de objecten meegeeft (getElementById("optie1") ipv "optie1") lijkt me dat het wel goed moet gaan...

Verwijderd

Topicstarter
dOh! Idd vrij suf van me.
Het script werkte in eerste instantie met onClick events op de options van de select maar dit werkte in IE niet dus moest ik het met een onChange doen in de select. Nooit aan die hideAll() gedacht...

Bedankt mensen!
Pagina: 1