[JS] Problem mit Schleife über Variable

Zent

Progger
ID: 35644
L
2 August 2006
162
4
Hallo,
irgendwie sitze ich gerade auf dem Schlauch. Habe folgendes Problem:
Ich habe viele Variablen die so aufgebaut sind:
test + zahl, also z.B:
test28
test87
test19
Ich weiß ein Array währe sinniger gewesen, aber darauf hatte/habe ich keinen Einfluß.
Nun möchte ich eine Schleife über all diese Variablen laufen lassen und prüfen, in welchen Varibalen ein Wert abgelegt ist. Habe das damit Versucht:

PHP:
  for (var i = 1; i <= 100; i++) {
    if (typeof("test"+i) != "undefined"){
      mach was
    };    
  };
Aber das funktioniert nicht. Er erkennt nicht, das "test"+i für eine Variable stehen soll, finde leider keine Lösung :(
 

In Javascript gibt es kein "isset" oder irre ich mich da schon wieder?
Desweiteren ist das Problem nciht die Prüfung via typeof, denn das funktioniert:
PHP:
    if (typeof(test1) != "undefined"){ 
      mach was 
    };
Es funktioniert nur nicht, dass er "test"+i als variable test1, test2 etc erkennt :(
 
das geht mit javascript nicht so einfach... mit eval ist schonmal der richtig ansatz, jedoch komplett falsch verwendet. eval gibt nichts zurück (oder nur true oder false), sondern führt nur die anweisung aus. und da test1 einfach nen zugriff auf ne variable ist passiert nix.

ist das selbe wie:
var test1;
test1

also musst du vorher die variable irgendwie buffern... zb eval("var temp = test"+1); und dann mit temp weiter arbeiten.
 
also musst du vorher die variable irgendwie buffern... zb eval("var temp = test"+1); und dann mit temp weiter arbeiten.

Danke, das mit eval war mir nicht klar, dachte dort wird der Ausdruck dann zurückgegeben.
Wenn ich nun mit dem temp weiterarbeite habe ich das Problem, dass er temp ja immer als String ("test1") versteht und ich nicht über die var temp auf die var test1 zugreifen kann :(
 
nein versteht er nicht... du weißt der einen variable den wert einer anderen zu. var temp = test1; und nicht var temp = 'test1';
 
nein versteht er nicht... du weißt der einen variable den wert einer anderen zu. var temp = test1; und nicht var temp = 'test1';

mmh, irgendwas mach ich wohl falsch:

PHP:
for (var i = 1; i <= 100; i++) {
     var temp = "test"+i;
	if (typeof(temp) != "undefined"){
	   mach was
	};
    
  };
Er sieht doch so temp als String 'test1' an, wie soll ich den temp die Varibale zweisen? Das ist ja mein Problem, dass das in einer Schleife geschehen muß. Es speichert in der temp immer den String "test" plus den String in i (also 1etc) ab. Aber nicht die Variablen test1, test2 test3 etc.
 
gibts in javascript kein array?
du hast ja TEST also warum nciht über nen index drauf zu greifen?
also das man ne vari nach ner vari benennen kann kenn ich nur aus php....

mfg
Samy

edit: sorry hab grad gelesen das du kein array verwenden kannst... voll überlesen ;)
 
Zuletzt bearbeitet:
*nixsag*

Code:
var temp = eval("test"+i);


geht auch nicht, habe ja vorhin gelernt, dass eval() nix zurücgubt. Also cih habe mal das Problem vereinfacht, so kann man leicht testen obs geht, habe schon zig Versionen durchgespielt, klappt einfach nicht:

PHP:
<script language="JavaScript">
var test1 = "Variable test1";
var test2 = "Variable test2";
var test3 = "Variable test3";  
var test4 = "Variable test4";  
  for (var i = 1; i <= 4; i++) {
     var temp = "test"+i;
     document.write(temp);
  };	
 </script>
Ergebnis:
test1test2test3test4

Soll Ergebnis:
Variable test1Variable test2Variable test3Variable test4

Kann doch nicht sein, dass es in JS nicht geht, oder?
 
Du musst ZeroCCC's Post ja auch richtig lesen und den Code dann nicht einfach irgendwie abändern, sondern schon mit Sinn und Verstand:
Code:
var test1 = "Variable test1";
var test2 = "Variable test2";
var test3 = "Variable test3";  
var test4 = "Variable test4";  
  for (var i = 1; i <= 4; i++) {
     eval("var temp = test"+i);
     document.write(temp);
  };
 
Du musst ZeroCCC's Post ja auch richtig lesen und den Code dann nicht einfach irgendwie abändern, sondern schon mit Sinn und Verstand:
Code:
var test1 = "Variable test1";
var test2 = "Variable test2";
var test3 = "Variable test3";  
var test4 = "Variable test4";  
  for (var i = 1; i <= 4; i++) {
     eval("var temp = test"+i);
     document.write(temp);
  };


*freu*
DANKE, das funktioniert endlich, aber kann mir bitte jemand sagen wieso das nicht mehr funktioniert?
PHP:
<script language="JavaScript">
var test2 = "Variable test2";
var test3 = "Variable test3";   
  for (var i = 1; i <= 4; i++) {
     eval("var temp = test"+i);
	 document.write(temp);
  };	
 </script>

Das hatte ich schonmal, ich tippe, es liegt daran, dass temp1 nicht existiert.
Und genau da leigt ein Problem, es gibt nciht alle temp variablen von 1 bis 100.
 
Richtig, das liegt daran, dass die Variable nicht existiert. Die JavaScript-Konsole zeigt Folgendes:
Error: test1 is not defined
Source File: https://localhost/test.html
Line: 6
Abhilfe schafft ein try-catch-Block:
Code:
var test2 = "Variable test2";
var test3 = "Variable test3";   
  for (var i = 1; i <= 4; i++) {
     try {
       eval("var temp = test"+i);
       document.write(temp);
     } catch (e) {
       document.write("Variable test"+i+" existiert nicht!");
     }
  }
 
Abhilfe schafft ein try-catch-Block:
Code:
var test2 = "Variable test2";
var test3 = "Variable test3";   
  for (var i = 1; i <= 4; i++) {
     try {
       eval("var temp = test"+i);
       document.write(temp);
     } catch (e) {
       document.write("Variable test"+i+" existiert nicht!");
     }
  }

DU bist nun mein persönlicher "Held", ich sitze seit 2 Tagen an diesem verdammten Problem. VIELEN DANK!
Hab hier nur ein JavaScriptbuch Verison 1.2, da gabs die try...catch noch nicht, benutzte Javascript nciht so oft, aber ich glaueb wird Zeit nochmal ein paar EUR in ein neues Buch zu investieren ;)