var Sring

kerian

Erfahrenes Mitglied
Hallo zusammen,
in einer Datei stehen die Variablen Data0 bis Data24.
Nun möchte ich die Variablen in einer for Schleife Auswerten, aber
das klappt nich so recht!
Code:
a = new String('Data');
b = new String();
var nWert;
for(i = 0; i<25; i++)
{
b = a + i;
nWert = b;
return nWert;
}
 
Kommt ganz drauf an, was du unter "auswerten" verstehst. :)

Mit einem return bekommst du jedenfalls keinen Ausgabewert, lediglich einen Rückgabewert.

Gruß,
Adam
 
Schreib mal was du damit bezweckst, dann können wir dir besser helfen. Ich denk mal es wird entweder auf Arries hinauslaufen oder auf ne funktion mit Rückgabewert, aber sag erstmal, was du genau machen willst...
 
Ausgeben kannst du die Werte bspw. so:
Code:
<pre>
<script type="text/javascript">
<!--
    for(i = 0; i<25; i++)
        {
        document.writeln('Data'+i+':'+eval('Data'+i));
        }
//-->
</script>
</pre>
...das Geheimnis heisst also eval('Data'+i)

Das return funktioniert nur innerhalb von Funktionen... und da auch nicht so, wie du dir das möglicherweise vorstellst, denn bereits beim ersten Schleifendurchlauf würde die Funktion mit dem entsprechenden Rückgabewert verlassen werden.
 
Danke an alle,
das Geheimnis liegt in eval('Data'+i)
Die Funktion eval() wandelt Text in ausführbarem Code um.
Sont habe ich immer als Rückgabewert den String bekommen Data0; Data1......
Jetzt bekomme ich den jewaligen Wert der sich in den einzelnen Variablen befindet.
Danke

Gruß
Kerian
 
Kleine Frage am Rande: Könnte man auch sowas in der Art..
HTML:
for (i=0;i<=5;i++) {
    C = eval('document.formular.C' + i);
      A = eval('document.formular.A' + i);
      B = eval('document.formular.B' + i);
      C.value = sqrt(A.value ^ 2 + B.value ^2);
   }
...machen?

Hier im Beispiel ein Formular mit den Eingabefelder A1 - A5, B1-B5 und C1-C5. Mit dem obenstehenden Script wird dann in Cx jeweils die Wurzel aus den quadrierten Werten der beiden zugehörigen Eingabefelder, Ax und Bx, gildet.

Geht sowas in der Art mit eval, sprich interpretiert es das " 'document.formular.C' + i " dann als Objekt? Wäre nämlich ungemein Praktisch.

Wenn nicht wie würde man sowas sonst realisieren?
 
Hi,

im Prinzip schon, bloß ist eval hierzu nicht unbedingt nötig:
HTML:
for (i=0;i<=5;i++) {
      C = document.getElementById("hypothenuse" + i);
      A = document.getElementById("ankathete" + i);
      B = document.getElementById("gegenkathete" + i);
      C.value = Math.sqrt(Math.pow(parseFloat(A.value), 2) + Math.pow(parseFloat(B.value), 2));
}
Wenn Du die Inputs in den entsprechenden Formularen wie oben benennst.

Gruß
.
 
Zuletzt bearbeitet:
Versuch mal so ein Formular zu verändern.
document.getElement hat nämlich keine Eigenschaft "value"
Ich kann dir garantieren du bekommst was vonwegen "ungültige Methode".

Könnte mir Vorstellen, dass es mit document.forms["vormnabe"].elements["A" + i].value geht hab ich aber nicht nachgeprüft. Wäre halt praktisch auch für andere Sachen wenn sowas in der art auch direkt mit eval("document.formular.A" + i).value ging.
Muss ja auch nicht eval sein ich will nur, dass ein String von JS als Objekt interpretiert wird. Wiedermal ne Frage für den Sven... :-(
 
Zuletzt bearbeitet:
Doch, geht problemlos - Du musst den Textfeldern nur IDs geben. ;)
Habs soeben getestet:
HTML:
<script language="JavaScript" type="text/javascript">
function calcForm() {
	for (var i=1; i<= 3; i++) {
		a = parseFloat(document.getElementById("a" + i).value);
		b = parseFloat(document.getElementById("b" + i).value);
		c = document.getElementById("c" + i);
		c.value = Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
	}
}
</script>
<body>
<form name="form1" method="post" action="">
<table width="400" border="1">
<tr>
<td><input name="a1" type="text" id="a1"></td>
<td><input name="b1" type="text" id="b1"></td>
<td><input name="c1" type="text" id="c1"></td>
</tr>
<tr>
<td><input name="a2" type="text" id="a2"></td>
<td><input name="b2" type="text" id="b2"></td>
<td><input name="c2" type="text" id="c2"></td>
</tr>
<tr>
<td><input name="a3" type="text" id="a3"></td>
<td><input name="b3" type="text" id="b3"></td>
<td><input name="c3" type="text" id="c3"></td>
</tr>
</table>
<input name="button" type="button" id="button" value="GO" onClick="calcForm();">
</form>
</body>

Gruß
.
 
Äh, vielen Dank. Selstsam, hab ich mich wohl vorher vertippt als ich's ausprobiert hab. Oder ich hab getElementByName genommen. Ersetzt mal das Id durch Name dann kommt der gleiche Fehler wir bei mir vorher.

Wie auch immer, aber das war's ja gar nicht worauf ich hinaus wollte - mir gehts wie gesagt nur darum ob man per JS-Funktion einen String als Objekt interpretieren lassen kann. Mit eval funktionierst so wie ich versucht hab nicht, es sei denn ich hab wieder irgenteinen dummen Fehler gemacht.
 

Neue Beiträge

Zurück