functionname abhänig von Variable
KmG
- javascript
Hallo,
ich will durch ein Array gehen und jedem Array Element eine bestimmte onclick Funktion zuweisen. Der Name der onclick Funktion, die zugewiesen werden soll, soll dabei vom Schleifenparameter abhängen, gibt es eine Möglichkeit das zu realisieren?
Bsp:~~~javascript
for(var i=0;i<LTabArray.length;i++){
LTabArray[i].onclick = function(){'TAB'+i+'BTN_onclick();'};
}
Also bei i=1 soll folgendes ausgeführt werden:~~~javascript
LTabArray[1].onclick = function(){TAB1BTN_onclick();};
Gruß
KmG
Dass man einer Funktion Parameter mitgeben kann ist dir bekannt?
Dass man einer Funktion Parameter mitgeben kann ist dir bekannt?
Ja das ist mir bewusst.
Das Problem ist, das die Funktionen momentan so generiert werden, das ich keinen Einfluss auf die Parameter habe.
Mahlzeit KmG,
Das Problem ist, das die Funktionen momentan so generiert werden, das ich keinen Einfluss auf die Parameter habe.
Und was hindert Dich daran, dafür eine Wrapper-Funktion zu schreiben, die ungefähr folgendermaßen aussieht:
function BTN_onclick(tab) {
switch (tab) {
case 1:
TAB1BTN_onclick();
break;
case 2:
TAB2BTN_onclick();
break;
}
}
MfG,
EKKi
Bsp:~~~javascript
for(var i=0;i<LTabArray.length;i++){
LTabArray[i].onclick = function(){'TAB'+i+'BTN_onclick();'};
}
Hier kannst du das simpler gestalten (vorallem müsste es auch so funktionieren):
`LTabArray[i].onclick = eval('TAB'+i+'BTN_onclick');`{:.language-javascript}
Habs net getestet, müsste aber eigentlich so funktionieren, auch wenn mir bestimmt gleich alle den Kopf abreißen wegen dem eval :-|
MfG
thecreep
Mal aus dem Kontext gerissen:
eval ist BBBBBÖÖÖÖÖÖÖÖÖSSSSSSEEEEEEE!!!!
Wenn man auf eval zurückgreifen muss, läuft irgendwas falsch. Unter dem Stichwort "eval is evil" findet man bei Google genügend Argumente gegen das Benutzen.
MfG Hase
Moin moin,
ich will durch ein Array gehen und jedem Array Element eine bestimmte onclick Funktion zuweisen. Der Name der onclick Funktion, die zugewiesen werden soll, soll dabei vom Schleifenparameter abhängen, gibt es eine Möglichkeit das zu realisieren?
Ja. Funktionen sind nichts anderes als ausführbare Variablen und globale Variablen sind nichts anderes als Attribute vom globalen Objekt, dh. window.
Somit könntest du folgendes probieren:
for(var i=0; i<LTabArray.length; i++){
LTabArray[i].onclick = window['TAB'+i+'BTN_onclick'];
}
Das ist zwar nicht schön und keine gute Programmierung, sollte aber klappen. Vllt kannst du nochmal probieren das ganze anders anzugehen.
MfG Hase