[JavaScript] checken of object bestaat *

Pagina: 1
Acties:

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 06-08 11:27
code:
1
2
3
4
5
6
7
var undefined; // geen waarde aan toekennen!
if(typeof myObject != undefined) {
    // myObject bestaat
}
else  {
    // myObject bestaat niet
}


Dit heb ik op het forum teruggevonden als de aangewezen manier om te controleren of een object bestaat of niet.

Nu is wat ik nodig heb net een klein beetje anders en dan loopt alles natuurlijk in het honderd...

code:
1
2
3
4
5
6
var undefined;
             
if (typeof document.getElementsByName(obj.value)[1] != undefined) {
  if (document.getElementsByName(obj.value)[1].type == "select-one") document.getElementsByName(obj.value)[1].selectedIndex = 0;
  if (document.getElementsByName(obj.value)[1].type == "text") document.getElementsByName(obj.value)[1].value = "";
}


Dit lijkt misschien wat rare code, maar ik weet op voorhand niet waar een pulldown of een tekstveld of misschien helemaal niks komt te staan, en dat vang ik dus op deze manier op.
Alleen blijft hij toch in de if gaan, ook al bestaat document.getElementsByName(obj.value)[1] niet. Ik krijg dan ook de foutmelding document.getElementsByName(...).1.type is null or not an object.
Ik moet dat toch kunnen opvangen ????


edit:
damn ik ben vergeten mijn titel fatsoenlijk te specifieren, en dat gaat precies niet in edit... mea culpa...

[ Voor 7% gewijzigd door codemann op 18-08-2003 09:28 ]


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

crisp

Devver

Pixelated

type is een string; je moet dus == 'undefined' uitvragen anders zoekt javacsript naar een object genaamd undefined.

Je kan het wel zo doen, maar dan moet je er een
JavaScript:
1
var undefined;

boven zetten ;)

edit: mmmz, staat er al boven.

ok, kan het dan zijn dat document.getElementsByName helemaal niets teruggeeft? probeer de afvraging dan zo te maken:

JavaScript:
1
2
if (document.getElementsByName(obj.value).length > 0 &&
    document.getElementsByName(obj.value).items(1) != undefined) {


note dat het eerste item een index van 0 heeft trouwens!

[ Voor 79% gewijzigd door crisp op 18-08-2003 09:43 ]

Intentionally left blank


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Checken of een object bestaat kan ook zo:

JavaScript:
1
2
3
4
5
6
if(document.getElementById('BtM909')){
  alert('bestaat)
}
else{
  alert('bestaat niet')
}

[ Voor 14% gewijzigd door BtM909 op 18-08-2003 09:35 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


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

crisp

Devver

Pixelated

BtM909 schreef op 18 augustus 2003 @ 09:34:
Checken of een object bestaat kan ook zo:

JavaScript:
1
2
3
4
5
6
if(document.getElementById('BtM909')){
  alert('bestaat)
}
else{
  alert('bestaat niet')
}
nee; da's niet netjes ;)

Intentionally left blank


  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 06-08 11:27
code:
1
2
3
if (document.getElementsByName(obj.value).length > 0 && document.getElementsByName(obj.value)[1] != undefined) {
  ...
}


Op deze manier lijkt het te werken... Nog even wat verder testen dat het zeker in orde is, bedankt voor de assistentie !

edit:

de tags "code" en "edit" ken ik, maar hoe krijg je dat zo mooi met die linenumbers?

[ Voor 35% gewijzigd door codemann op 18-08-2003 09:59 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

crisp schreef op 18 August 2003 @ 09:41:
[...]

nee; da's niet netjes ;)
why ?
edit:

de tags "code" en "edit" ken ik, maar hoe krijg je dat zo mooi met die linenumbers?
[plain]
JavaScript:
1
...

[/]
ipv js kan je er nog wat meer invullen. Kijk ook eens hier (onderin).

[ Voor 21% gewijzigd door BtM909 op 18-08-2003 10:05 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


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

crisp

Devver

Pixelated

Omdat strict genomen 'undefined' nooit geevalueerd mag worden naar false; het is namelijk noch false noch true. Mozilla heeft een optie voor strict javascript warnings; dan kom je het wel tegen ;)

Intentionally left blank

Pagina: 1