Dynamisch erzeugte Variablen registrieren
Florian
- javascript
0 werbeklaus0 Struppi
Hallo Zusammen!
Bin langsam am verzweifeln.
Habe folgendes Problem:
Mit PHP erzeuge ich eine JavaScript Variable meineVar2006051 = 'wert'
Nun versuche ich den Wert dieser Variablen in Javascript abzufragen, dazu bastel ich mir dynamisch den Variablen-Namen zusammen und zwar so:
maxjahr = String(jahr);
maxmonat = String(monat);
maxtag = String(i);
maxdatum = eval(maxjahr+maxmonat+maxtag);
neueVar = eval("meineVar"+maxdatum);
Funktioniert bis hierher bestens: habe dann eine Variable die so aussieht: meineVar2006051
Jetzt kann es natürlich sein, dass ich diese Variable zuvor mit PHP nicht deklariert habe also gibt Javascript mir einen Fehler aus, dass die Variable undefined ist.
Wenn ich die so versuche Javascript bekannt zu machen:
var neueVar; // geht nicht
oder
var eval("meineVar"+maxdatum); // gibt 'missing; after statement'
Geht das alles nicht. Will einfach nur die dynamisch generierte Variable Javascript bekannt machen - leider ohne Erfolg.
Hat jemand eine Idee, wie ich das Problem lösen kann?
Gruß
Florian
Hallo,
Geht das alles nicht. Will einfach nur die dynamisch generierte Variable Javascript bekannt machen - leider ohne Erfolg.
Hat jemand eine Idee, wie ich das Problem lösen kann?
PHP generiert den Quelltext, den dein Browser bekommt. Wenn da nun etwas generiert wurde wie
var meineVar2006051 = 'hallo';
dann merkt javascript nichteinmal, dass das ganze von PHP stammte.
Folglich gibt es da auch nichts zu registrieren.
(Schau doch mal im Quelltext nach, ob das PHP richtig macht)
Anonsten kannst du das umständliche Variablennamezambauen auch sparen, indem du entweder einen einfacheren, immer gleichen Namen nimmst, oder immer wenn der Name verwendet wird, ihn von PHP dorthin schreiben lässt. Weil wenn der Code beim Browser is, is dem sowas von egal ob der dynamisch nur für ihn gilt oder nicht.
So, viel Erfolg beim weiteren JavaScripten,
werbeklaus
Es reicht einfach:
var maxdatum = maxjahr + maxmonat + maxtag;
var neueVar = window["meineVar"+maxdatum];
Hallo Struppi,
genau das war es, was ich gesucht habe - vielen Dank :-)
Kannte das nur mit eval. Benutze Javascript auch nur selten.
@Werbeklaus: Das ganze ist für ein Kalender gedacht - halte es für sehr Performancelastig, wenn ich für jeden Monat 30 Variablen * 12 Monate * 13 Jahr in den Quelltext schreibe - trotzdem Danke.
Gruß
Florian
genau das war es, was ich gesucht habe - vielen Dank :-)
Kannte das nur mit eval. Benutze Javascript auch nur selten.@Werbeklaus: Das ganze ist für ein Kalender gedacht - halte es für sehr Performancelastig, wenn ich für jeden Monat 30 Variablen * 12 Monate * 13 Jahr in den Quelltext schreibe - trotzdem Danke.
Naja, wie wär's mit Arrays?
var kalender = new Array();
und dann mit PHP die entsprechende Ausgabe der variabeln:
kalender[jahr][monat][tag] = .....
(wobei dann natürlich die Monatsarrays für das Jahr dann erst erzeugt werden müssen)
Jetzt kannst du jeden Tag prüfen z.b. so:
if(kalender[jahr][monat][tag]) Ausgabe(kalender[jahr][monat][tag]);
Struppi.
Habe folgendes Problem:
Mit PHP erzeuge ich eine JavaScript Variable meineVar2006051 = 'wert'
Nun versuche ich den Wert dieser Variablen in Javascript abzufragen, dazu bastel ich mir dynamisch den Variablen-Namen zusammen und zwar so:
Naja, mal abgesehen davon dass das garantiert nicht der optimale Weg ist, ....
maxjahr = String(jahr);
maxmonat = String(monat);
maxtag = String(i);
maxdatum = eval(maxjahr+maxmonat+maxtag);neueVar = eval("meineVar"+maxdatum);
... ist eval evil!
Es reicht einfach:
var maxdatum = maxjahr + maxmonat + maxtag;
var neueVar = window["meineVar"+maxdatum];
Und mit dem Wissen, solltest du auch die Prüfung mit typeof hinkriegen.
Struppi.