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

function als variable in function übergeben

TecEye

New member
Hy Leute, ich habe eine Error-/StatusLeiste gebastelt die erscheint wenn irgendwin event passiert ist, gut oder schlecht oder eben mit Abfrage. Hier in verkürzter Form

Code:
function statusLeiste(typ,text,link,link_text,cancel,timeout){

if(link_text != ""){ text = text + "<input type='button' style='margin-left:10px;' class='heavy cornerAll' value='"+link_text+"' onclick=\""+link+";slideoutStatusLeiste();\">"; }
if(cancel != ""){ text = text + "<input type='button' style='margin-left:10px;' class='light cornerAll' value='"+cancel+"' onclick='slideoutStatusLeiste();'>"; }
$('#statusText').html(text);
if(typ == 0){ $('#statusLeiste').css("border-bottom","3px #ADADAD solid"); }
if(typ == 1){ $('#statusLeiste').css("border-bottom","3px #00AD00 solid"); }
if(typ == 2){ $('#statusLeiste').css("border-bottom","3px #DC0000 solid"); }

$('#statusLeiste').animate({marginTop: "0px"},{queue:false,duration:500});
if(timeout > 0){ status_timeout = setTimeout(function(){ $('#statusLeiste').animate({marginTop: "-120px"},{queue:false,duration:500}); }, (timeout * 1000)); }
}

so jetzt will ich eine Abfrage machen JA|NEIN, und dem parameter 'link' eine function mitgeben welches JA zugewiesen wird

Code:
statusLeiste(2,'Diese Seite ist schon geöffnet. Wollen Sie diese Seite trotzdem erneut erstellen?','addTabContent(name,page,icon,allow)','JA','NEIN',0);

das functioniert nicht, hab es auch mal mit eval() ausprobiert hier:
Code:
if(link_text != ""){ text = text + "<input type='button' style='margin-left:10px;' class='heavy cornerAll' value='"+link_text+"' onclick=\""+eval(link)+";slideoutStatusLeiste();\">"; }

geht auch nicht!

Hat da jemand ne Idee für mich?

- - - Aktualisiert - - -

Also wenn ich normale Funktionen einbinde wie 'delTabContent();' ohne Inhalt dann geht's

Jetzt hab ich mir gedacht muss ich die variablen korrekt einbinden quasi so 'addTabContent('+name+','+page+','+icon+','+allow+')'
funktioniert aber auch nicht :(
 
Zuletzt bearbeitet:
Hast du mal in die Fehlerkonsole geschaut? Da steht bestimmt was drin.


P.S.: Wenn du eh schon etliche Parameter übergibst, kannst du die 4 auch noch mit übergeben und den Funktionsnamen "addTabContent()" direkt ins onclick schreiben.
 
das ist ja nur ein beispiel, ich will die funktion allgemein halten, damit ich jede function übermitteln kann
 
die makierte Zeile beinhaltet:
var secondschecktoken = '5';
als globale variable zuanfang, das kanns ja nicht sein, der Zusammenhang erschließt sich mir da nicht
 
im aufrubaren teil, also:

Code:
statusLeiste(2,'Diese Seite ist schon geöffnet. Wollen Sie diese Seite trotzdem erneut erstellen?',function() {
  addTabContent(name,page,icon,allow);
},'JA','NEIN',0);

Code:
if(link_text != ""){ text = text + "<input type='button' style='margin-left:10px;' class='heavy cornerAll' value='"+link_text+"' onclick=\""+link+";slideoutStatusLeiste();\">"; }
 
leider nicht, hab es auch mit nem alert mal versucht, aber es kommt nix, nada
Code:
statusLeiste(2,'Diese Seite ist schon geöffnet. Wollen Sie diese Seite trotzdem erneut erstellen?',function(){ alert(name); },'JA','NEIN',0);

- - - Aktualisiert - - -

in der function selber geht auch nicht
var linkfunction = function(){ link };

- - - Aktualisiert - - -

mach ich in der function das
var linkfunction = $(function (){ eval(link); });

öffnet er mir die gewünschte funktion, allerdings ohne klick, sondern schon zuvor
 
Probiere mal bitte dein Button als jQuery object zu schreiben und zu verwenden:
var $deinButton = $('<input />', {type: 'button', 'class': 'heavy cornerAll', value: link_text, style: {marginLeft: '10px'}}).click(link);
 
Probiere mal bitte dein Button als jQuery object zu schreiben und zu verwenden:
var $deinButton = $('<input />', {type: 'button', 'class': 'heavy cornerAll', value: link_text, style: {marginLeft: '10px'}}).click(link);

Sorry war 2 wochen im Urlaub, danke danke, die Idee hat mir sehr geholfen, habe dem Button eine id gegeben und dann mit jquery angesteuert:
Code:
$('#statusLeisteLink').click(function(){ eval(link); slideoutStatusLeiste(); } );
funktioniert genau wie es soll ;)
 
es besteht eine Möglichkeit für JS-Innjection
Na siehst du ;) - nein, im Ernst: eval() ist nicht nur aufgrund der Möglichkeit von Injections evil... Vor allem: warum verwendest du es überhaupt? Brauchst du doch gar nicht!
in der function selber geht auch nicht
var linkfunction = function(){ link };

mach ich in der function das
var linkfunction = $(function (){ eval(link); });

öffnet er mir die gewünschte funktion
kein Wunder - du musst in der ersten Variante die Funktion schon auch aufrufen: function(){ link(); }; - wobei das in diesme Fall ohnehin Krampf ist, denn ohne Parameter brauchst du keine anonyme Funktion drumherum, sondern kannst einfach die Funktion als Referenz übergeben...
 
Zurück
Oben