[js] object in variabele opslaan

Pagina: 1
Acties:

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17:51
Om niet steeds ellenlange javascriptregels in te hoeven typen had ik bedacht dat het wel handig was om een object in een variabele op te slaan. Zo zou ik dan dus met:
var test=parent.mijnframe.document;

heel eenvoudig test.location= kunnen doen.
Maar dit gaat niet, want firefox zegt dan dat test geen parameters heeft.
Wat aan het principe van javascript begrijp ik niet? :?

Verwijderd

Laat eens je hele script zien, want als ik het volgende (in IE) probeer:
JavaScript:
1
2
var test = window.location;
alert(test.href);

dan werkt het allemaal wel... Misschien is je test variabele out-of-scope?

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17:51
hmm, je hebt inderdaad gelijk.
wat ik doe:
ik heb in een javascript blaat.js file een variabele aangemaakt:
var test=top.mainFrame.document.getElementById('leftFrame');

en vervolgens wil ik in een file die die javascript file include het volgende doen:
<a href="#" onClick="javascript:test.src='http://www.google.com';">test</a>

en dat gaat dus niet goed :'(

---edit---
die top.mainFrame..... is goed hoor.
Als ik namelijk alert(test.src); doe in die javascriptfile, krijg ik netjes de url van de site die in
dat iframe geladen is. Wat is er dan fout? :? (zal idd iets met scope zijn gok ik)

[ Voor 50% gewijzigd door Zynth op 06-12-2004 19:43 ]


Verwijderd

Als je ipv van onClick="javascript:test.src='http://www.google.com' een functie oproept in je blaat.js dan is je scope weer goed.

Je krijgt dan iets van (ongetest):
JavaScript:
1
2
3
4
5
6
var test=top.mainFrame.document.getElementById('leftFrame');

function go() {
  test.src='http://www.google.com';
  return false;
}

en
HTML:
1
<a href="#" onClick="return go()">test</a>


Kun je overigens niet met targets in je link werken? En dat hele javascript achterwege laten?
HTML:
1
<a href="http://www.google.com" target="leftframe">test</a>

Je frames moeten dan natuurlijk wel namen hebben, maar dat is standaard HTML...

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17:51
mj,a maar dat was eigenlijk niet de bedoeling.

Maar wat je zegt klopt in principe ook niet;
als ik namelijk in die onClick wél bij de fúnctie go() zou kunnen, (wat overigens kan :))
zou ik dus ook bij de variabele test moeten kunnen komen.
Die zitten immers in precies dezelfde scope.

[ Voor 6% gewijzigd door Zynth op 07-12-2004 13:39 ]


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 17:13

RM-rf

1 2 3 4 5 7 6 8 9

probeer eens:

code:
1
var test=parent.frames["mijnframe"].document

ja, explorer staat je toe om veel objecten vrijwel direkt via document.objectnaam aan te srepeken, zelfs al zijn het bv elementen die eigenlijk onder [i]document.forms["formnaam"].elements["objectnaam"] behoren ...

als je veel in explorer test merk je het verschil niet tussen de 'quick-and-easy' manier en de lange ingewikkelde manier om objecten aan te spreken ... totdat je names bv niet meer uniek zijn, je andere vreemd gedrag van je scripts aantreft en deze nooit en te nimmer door standaard debuggen te vinden is, hooguit met wat trial-and-error-kennis snel uit te vinden zijn ...

aan te raden is dus om gewoon altijd de gehele paden te gebruiken om objecten aan te spreken of gewoon via getElementById te werken (IDs zijn wel altijd uniek)

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen

Pagina: 1