• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Value-Wert einer Variable für die Identifiezierung einer anderen Variable möglich ?

dasmein

New member
Hallo,
gibt es eine Möglichkeit eine Variable anzusprechen mithilfen von den Value-Werten einer anderen oder mehreren Variablen ? Beispiel:
Code:
var eins = "a";
var zwei = "20";
Über die Werte a und 20 möchte ich nun eine neue Variable a20 definieren! Bisher habe ich es nur geschafft, eine bestimmten ID im HTML-File auszulesen:
Code:
document.getElementById("Kategorie"[B]+(i+1)[/B]).value=Kategoriename;
 
Danke erstmal für deine Antwort!
Das habe ich ja bei ...getElementById.... ja auch so hinbekommen! Nur bei den Variablen will es nicht klappen. So habe ich es mal getestet:
Code:
var eins="a";
var zwei=20;
var eins+zwei = "Ich gehöre zur Variable a20";
Auch mit
Code:
 var a+zwei="Ich gehöre zur Variable a20"
komme ich nicht zum Ziel.
 
Das funktioniert bei Variablen nur über extrem hässliche Wege. Mach' dir besser ein Objekt, wo du deine "Variablen" als Keys hinterlegst. Dann kannst du über Schema 4 darauf zugreifen:
Code:
var obj = {a20: "test"};
var eins="a";
var zwei=20;
alert(obj[eins+zwei]);
 
Ich vermute mal mit hässlichen wegen ist "eval" gemeind.
Aber Weil man in so einem Vorhaben ohnehin erst auf Vorhandensein der Variable prüfen muss.
( eventuell werden vom User über ein Formular die Werte eingegeben)
post ich hier gleich mal mit try & catch
HTML:
<!DOCTYPE html>

<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="description" content=""/>
		<meta name="keywords" content=""/>
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
		<title>EVAL vs OBJECT</title>
		
	</head>
	<body>
<div id="test" >Hallo JS Welt Forum :)</div>	
	
<script> 

var x = 'Z';
var y = 38;
const Z39 = "let's test";
try{ alert( eval(x+y) ); }
catch(err) {alert('Variable nicht vorhanden');} // Variable nicht vorhanden

var obj = {a20: "test"};
var eins="a";
var zwei=29;
try{ alert( obj[eins+zwei] ); }
catch(err) {alert('Variable nicht vorhanden');} // undefined

</script>	
	</body>
</html>
 
Ich vermute mal mit hässlichen wegen ist "eval" gemeind.
Ja - und im Zusammenhang mit Usereingaben ist es sogar gefährlich.

Die Prüfung, ob die "Variable" dann vorhanden ist, ist mit meinem Ansatz natürlich auch möglich und sogar ohne try:
Code:
var obj = {"a 20": "test"};
var eins = "a ";
var zwei = 29;
if (obj.hasOwnProperty(eins + zwei)){
	alert( obj[eins+zwei] );
}
else {
	alert('Variable nicht vorhanden');
}

Außerdem kann man hier dann Dinge hinterlegen, die in einem Variablennamen gar nicht vorkommen können.
 
Das mit dem Obj ist sicher sehr praktisch man könnte so auch ein JSON übergeben ect.
aber es ist nicht weniger gefährlich.
Aber kann ich auch eine const od let variable verwenden?
oder was wenn die Variable doppelt vorhanden ist.

PHP:
var obj = {a20: "test",a20:"test2"};
var eins="a";
var zwei=20;
try{ alert( obj[eins+zwei] ); } // ausgabe  test2

catch(err) {alert('Variable nicht vorhanden');} // undefined
 
Zuletzt bearbeitet von einem Moderator:
Der lesende Zugriff auf nicht vorhandene Objekt-Eigenschaften verursacht keine Exception, sondern liefert undefined zurück.
 
aber es ist nicht weniger gefährlich.
Warum? Was ist daran gefährlich?
Aber kann ich auch eine const od let variable verwenden?
Was meinst du damit genau? Die Variable obj kann ich natürlich auch mit const/let deklarieren. Und wenn ich eine Eigenschaft in dem Objekt als unveränderlich markieren möchte, kann ich das über https://developer.mozilla.org/en-US...eference/Global_Objects/Object/defineProperty auch machen - oder ich versiegle das komplette Objekt: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal

oder was wenn die Variable doppelt vorhanden ist.
Was soll dann sein? Auch eine normale Variable kannst du überschreiben.
 
Zurück
Oben