Archief - variabele naam in string

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

het.pc.schaap

Legacy Member
Hoe doe jet hetvolgende?:

Code:
var variableToAcces = 'foo';
var foo = 'bar';
alert(variableToAccess);
de alert geeft natuurlijk foo, maar ik zou willen dat de inhoude van de variabele foo gegeven wordt, dus bar in dit geval.

enig idee hoe dit moet?

alvast bedankt

adrianhates

Legacy Member
Dit is een beetje omslachtig .. niet?

Ge kunt beter een functie maken dat uw alert toont met de gegeven parameter..

Zero Grav

Legacy Member
Hij zal het trouwens nooit doen in deze volgorde omdat ge foo assignt voor ge em aanmaakt. Javascript maakt standaard geen pointer naar een variabele, hij slaat de waarde van foo letterlijk op in variableToAccess. Als ge die dus nog niet hebt aangemaakt bij het assignen krijgt ge een nullobject, undefined.

Wat wel zou gaan is:

Code:
    <script>
    var foo = "test";
    var bar = foo;

    
    alert(bar);
    
    </script>
En dit is wat ik bedoel met undefined:

Code:
    <script>
    var bar = foo;
    var foo = "test";
    
    alert(bar);
    
    bar = foo;
    
    alert(bar);
    
    foo = "changed";
    
    alert(bar);
    
    </script>
Uw eerste alert gaat undefined zijn, de tweede zal "test" zijn. De derde keer zal evenzeer "test" zijn omdat de waardes van die variabelen niet gelinkt zijn.

Ik weet eigenlijk niet in welke mate Javascript pointers ondersteunt. *edit* Blijkbaar worden pointers somewhat ondersteund als het om objecten gaat.

Code:
var myOldVariable = new Object();
var myNewVariable = myOldVariable;
myNewVariable.newChild = 'Hello';
alert(myOldVariable.newChild); //This will alert 'Hello'
http://www.howtocreate.co.uk/tutorials/javascript/variables

het.pc.schaap

Legacy Member
Niet direct war ik bedoelde.

stel je hebt 2 variabele, var foo = 'foofoo' en var bar = 'barbar';

als voorbeeld nu even: je vraagt aan de gebruiker welke variabele je moet alerten, en je krijgt dit terug als een string, dus bijvoorbeeld var returnString = 'foo';

en nu zoek ik een manier dat dan de inhoud van foo ge-alert wordt 'foofoo' dus. En liefst zonder eval, want daar ben ik niet zo een voorstander van :p

Fr3aK

Legacy Member
Code:
var variableToAccess = 'foo';
var foo = 'bar';
alert(eval(variableToAccess));

Waarom zonder eval()? Voor zover ik weet is er geen andere manier.

YaMo

Legacy Member
Misschien met een hash?

Code:
var vars['foo'] = 'bar';

var variabletoacces = 'foo';

alert(vars[variabletoacces]);

adrianhates

Legacy Member
haha dit is echt een vreemde vraag en kan het moeilijk plaatsen :)

Fr3aK

Legacy Member
YaMo zei:
Misschien met een hash?

Code:
var vars['foo'] = 'bar';
var variabletoacces = 'foo';
alert(vars[variabletoacces]);
Leuke invalshoek, werkend voorbeeld van gemaakt ;)
Code:
var my_vars = new Array();
my_vars['foo'] = 'bar';
var variableToAccess = 'foo';
alert(my_vars[variableToAccess]);

dJeez

Legacy Member
Kan je de specifieke use case (dus het specifieke geval of de reden waarom je dat op die manier zou willen doen) eens toelichten? Want eerlijk gezegd zie ik niet in waarom je op die manier zou gaan werken... Ik hoop voor u dat je geen PHP programmeert in inspiratie haalt uit variable variables. Als dat laatste het geval is : NOOIT gebruiken die handel, debuggen daarvan is rampzalig...

YaMo

Legacy Member
Fr3aK zei:
Leuke invalshoek, werkend voorbeeld van gemaakt ;)
Code:
var my_vars = new Array();
my_vars['foo'] = 'bar';
var variableToAccess = 'foo';
alert(my_vars[variableToAccess]);

Ja, sorry, al lang geen javascript meer gebruikt :p

maansrekiurbeg

Legacy Member
Dit is inderdaad iets dat je best niet te vaak gebruikt :)
Maar ik heb het zelf ook al wel eens nodig gehad. Iets oudere web-applicatie met veel geneste iframes, en op een bepaald moment moest er vanuit zo'n iframe iets getriggered worden x niveaus hoger (maar je kon niet zeker weten hoeveel). Dus dan iets moeten doen in de trant van
Code:
function triggerCallback( name, id ) {
    var currentWindow = window;
    do {
        if( typeof( currentWindow[name] == 'function' ) ) {
            return currentWindow[name](id);
        }
        currentWindow = currentWindow.parent;
    } while( currentWindow != currentWindow.parent );
}
Merk dus ook op dat je niet zelf zo'n hash moet maken, alle globale variabelen zijn zo automatisch beschikbaar in de window variabele.

het.pc.schaap

Legacy Member
@ djeez: een specifieke use ccase kan ik niet geven. Was gewoon mijn javascript kennis aan het opfrissen.

@maansrekiurbeg: uw oplossing is een handige oplossing, wist niet mere dat alle globar vars beschikbaar zijn in de window :)

bedankt alle voor het antwoord ! :D
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan