Struppi: Dynamischer Zugriff

Beitrag lesen

um meine Texte bei unterschiedlichen Sprachen zu ändern gehe ich aus Platzgründen folgenden Weg:

Was für Platzgründe?

Im HTML:
xxx<span id="ba_1"></span>xxx
xxx<span id="ba_2"></span>xxx

sowie ich das sehe bläht das den code eigentlich erst auf.

kekse1 = new Array("Eng1","Deu1");
kekse2 = new Array("Eng2","Deu2");
kekse3 = new Array("Eng3","Deu3");
kekse4 = new Array("Eng4","Deu4");
kekse5 = new Array("Eng5","Deu5");

die Zahlen im Namen deuten schon daraufhin, dass du eigentlich ein Array willst. Und aus Platzgründen kann man das auch einfacher in der literalen Notation schreiben

kekse = [  
[ "Eng1","Deu1" ],  
[ "Eng2","Deu2" ],  
[ "Eng3","Deu3" ],  
[ "Eng4","Deu4" ],  
[ "Eng5","Deu5" ]  
];

function TexteRein(Sprache)
{
Disp("ba_1",kekse1[Sprache]);
Disp("ba_2",kekse2[Sprache]);
Disp("ba_3",kekse3[Sprache]);
etc..
}

Disp("ba_1",kekse[1][Sprache]);
Disp("ba_2",kekse[2][Sprache]);
Disp("ba_3",kekse[3][Sprache]);

Es ginge noch einfacher, aber dazu müßte man die tasächliche Struktur kennen.

Das ganze Funktioniert auch hervorragend. Es ist Platzsparend (was EXTREM wichtig ist). Ich kann innerhalb kürzester Zeit andere Sprachen zufügen. Also, die Lösung.

Ob das wirklich Platzsparend ist ist die Frage.

Nun möchte ich das ganze jedoch etwas verfeinern:
Die Funktion Disp(...) wird ja mit fortlaufenden Daten aufgerufen.
Die erste Variable ist dabei auch Problemlos dynamisch erstellbar:
var i=0;
for (i=1;i<AnzArray;i++)
{
  Disp("ba_" + i, ja und hier geht es nimmer!!??
}

Du könntest auch in Disp die entsprechenden werte zusammenbauen.

function Disp(mID,lang)  
{  
var id = 'ba_' + mID;  
var text = kekse[mId][lang];  
var obj = document.getElementById(id);  
if (obj)obj.innerHTML = text;  
}  

var EN = 0;
var DE = 1;

Disp(1, DE);
Disp(2, DE);

usw.

Deine 'ba_X' IDs müssen dann aber mit Null anfangen.

Struppi.