login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Variabele uit functie halen

Offline jerone - 04/09/2007 09:29 (laatste wijziging 04/09/2007 09:33)
Avatar van jeroneJS gevorderde Ik heb een werkend script geschreven voor GreaseMonkey.
Maar nu wil ik in een andere functie een waarde halen uit dit script.
Hoe moet ik dat doen.

Het gaat om dit script: Plaatscode: 6514

Ik wil zegmaar de waarde "currentVersion" uit bovenstaande script halen. Hoe doe ik dit 
Volgens mij moet dit heel makkelijk zijn, maar ik kom er niet achter 

alvast bedankt, gr J

ps. kan iemand mij vertellen hoe deze manier van scripten heet?

14 antwoorden

Gesponsorde links
Offline Wim - 04/09/2007 20:34
Avatar van Wim Crew algemeen bij php is dit "global $var" om iets globaal te maken. Misschien kan je het m.b.v. google en dit wel gevonden krijgen (als het niet hetzelfde is).

Anders kan je een nieuwe parameter bijmaken, en als deze bvb true is gewoon de currentVersion returnen
Offline jerone - 04/09/2007 22:08
Avatar van jerone JS gevorderde Ik ken (nog) geen php en ik heb deze optie nog nooit gezien bij js.

Het punt is dat ik bovenstaande script niet wil aanpassen omdat ik hem vaker wil gebruiken.
Alleen toevallig bij mij huidige script waar ik bezig ben wil ik die variable uit bovenstaande script halen.
Offline Stijn - 04/09/2007 22:14
Avatar van Stijn PHP expert Defineer dan die variable buiten je functie/class/object, dan is hij wel global en kan je hem overal, waar en wanneer je ook maar wilt aanroepen.
Offline marten - 04/09/2007 22:14
Avatar van marten Beheerder Ik heb een werkend script geschreven voor GreaseMonkey.

ps. kan iemand mij vertellen hoe deze manier van scripten heet?

Waarom lieg je nou? Je praat jezelf gewoon tegen hier. Je hebt dit script niet geschreven. Zeg dat nou maar gewoon.
Offline jerone - 04/09/2007 22:58 (laatste wijziging 04/09/2007 23:01)
Avatar van jerone JS gevorderde Waarom moet je dat nou zeggen, ik heb dat wel geschreven, ik weet alleen niet hoe die manier van scripten heet.
Waarom zou ik daarover liegen???
Als je zo graag eigenwijs bent, ik heb die vraag al eens eerder gesteld (Linkje), maar ik weet nog steeds niet hoe het nou precies heet. Ik heb gewoon van bestaande scripts mezelf geleerd hoe dat werkt. Kwestie van uitproberen hè.

En even om duidelijk te zijn; ik heb met behulp van andere scripts bovenstaande script wel zelf geschreven !!!

---
@stijn1989
Kun je me dan uitleggen hoe ik dat dan moet doen, want ik kom er echt niet uit. Ik heb al vanalles geprobeerd (zelfs met de call functie).

Alvast bedankt.
Offline Stijn - 05/09/2007 00:18
Avatar van Stijn PHP expert Je kan zo'n script maken maar dit versta je niet... 

  1. var getal; //init var getal
  2.  
  3. // heel veel javascript code
  4. function schrijfGetal)
  5. {
  6. getal = 5;
  7. }
  8.  
  9. function leesGetal()
  10. {
  11. alert( getal );
  12. }
  13.  
  14. leesGetal(); //output: null;
  15. schrijfGetal();
  16. leesGetal(); //output: 5
Offline jerone - 05/09/2007 14:28 (laatste wijziging 05/09/2007 14:30)
Avatar van jerone JS gevorderde Ok, ik heb geprobeerd wat jij hierboven opperd:
  1. var currentVersion;
  2.  
  3. var GM_update = function(script) {
  4. // blabla (zie script in begin post)
  5. }
  6.  
  7. alert(currentVersion);

ik heb dus eerst de variable gemaakt, daarna de code uitgevoerd en daarna een alert getriggerd.
Maar nog krijg ik "undefined" als uitkomst.  
Offline BramBo - 06/09/2007 13:32 (laatste wijziging 06/09/2007 13:32)
Avatar van BramBo JS gevorderde Dan doe je toch iets niet goed, Als een variabelen binnen eenzelfde scope valt kan je deze van overal binnen de scope aanroepen..

de code die je hier boven paste is equivalent aan:
  1. var str = "a";
  2. alert(str);


als je str echter in je GM_update nogmaals aanmaakt valt deze buiten de scope!
  1. var str = "a";
  2. bla = function() {
  3. var str = "b";
  4. }
  5. bla();
  6. alert(str); // alert a


Offline jerone - 06/09/2007 19:45
Avatar van jerone JS gevorderde ok, ik ben alweer een stukje verder gekomen, maar ben er nog niet helemaal.
Het probleem was dat er geen 'var' voor de tweede variable in de functie mag staan.
Maar zoals je kon zien in de script in de eerste post staat 'currentVersion' in nog een functie. Zodra ik dus bij 'str = "b";' (zonder ') in deze functie zet, werkt de alert niet meer.
Ik heb de volgende code nu:
  1. var str = "a";
  2. bla = function() {
  3. str = "b";
  4. this.init = function() {
  5. str = "c";
  6. }
  7. }
  8. bla();
  9. alert(str);
Het antwoord is dus nu nog steeds "b", maar ik wil dus "c" hebben.  
i.i.g. bedankt voor de help zover, nu het laatste stukje nog  
Offline BramBo - 06/09/2007 20:15
Avatar van BramBo JS gevorderde in jou geval is bla() een object dit wil zeggen dat het een placeholder is voor functies en variabelen.

Zoals in je voorbeeld gegeven; init() wordt niet aangeroepen en zal dus nooit c kunnen routeneren.
  1. var str = "a";
  2. bla = function() {
  3. str = "b";
  4. this.init = function() {
  5. str = "c";
  6. }
  7. }
  8. var objectje = new bla();
  9. objectje.init();
  10. alert(str);

Offline jerone - 06/09/2007 20:25 (laatste wijziging 06/09/2007 20:28)
Avatar van jerone JS gevorderde ow sorry dan heb ik dat verkeerd geschreven, this.init wordt wel getriggerd in de functie zelf;
  1. var str = "a";
  2. bla = function() {
  3. str = "b";
  4. this.init = function() {
  5. str = "c";
  6. }
  7. this.init();
  8. }
  9. bla();
  10. alert(str);
zelfde probleem dus nog steeds.

Note: alles in de bla functie werkt wel (getest), heb het voor het voorbeeldje alleen even verwijderd.
Offline BramBo - 06/09/2007 20:38
Avatar van BramBo JS gevorderde de code die je post alert 'c'  
Offline jerone - 06/09/2007 20:49 (laatste wijziging 06/09/2007 20:49)
Avatar van jerone JS gevorderde ah, ik ben toch even verder gaan kijken en ik weet me probleem  

De alert wordt te snel getriggerd, nog voordat mijn script klaar is met zijn xmlhttpRequest (zie eerste post).

probleem opgelost met een setTimeout, toch bedankt, gr J
Offline Stijn - 06/09/2007 22:06
Avatar van Stijn PHP expert Doe zo, wat ik wil zeggen is dat je variable buiten de functie moet staan maar binnen je object.

  1. var GM_update = function(script) {
  2. var currentVersion : null ,
  3.  
  4. ...
  5. show : function()
  6. {
  7. alert( this.currentVersion );
  8. }
  9. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.218s