Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 29 von 29
  1. #16
    chappy_berlin ist offline Eroberer
    registriert
    09-04-2010
    Beiträge
    55

    AW: dynamische Funktionsnamen

    Hier der Aufruf beim laden der Seite

    Code:
    <body onload="startpart()" bgcolor="#ffffff">
    file3 steht für "katalog_levelsteuerung_menuuebersicht.php" welche in dem Initialisierungsfile festgelegt ist, da die PHP files für mehere Datenübergaben konstruiert sind.

    Code:
    <td bgcolor="silver" width="458"><label class="updatebox8" onclick="menuneu(levelname='divinsert');insertsave()">Speichern</label></td>
    Im zweiten Codeteil ist der klick auf eine Speicherschaltfläche.

    Ich weiß nicht so genau, warum ich knapp 20 HTML,PHP und JS files hier posten soll. Ich brauche einfach nur die Möglichkeit wie in PHP Namen, hier Funktionsnamen, variabel zu gestalten und diese in der Funktion "outfunction" zu hinterlegen und zu starten.

  2. #17
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: dynamische Funktionsnamen

    1. Woher hast du diesen func(parametername=wert) Schwachsinn? Ist zwar valides JS... aber sinnfrei.
    2. Schau' dir doch das Beispiel von jspit (OT: ich nehm' das irgendwie immer als j-spit nicht als js-pit wahr... aber das nur am Rande) genau an!

  3. #18
    chappy_berlin ist offline Eroberer
    registriert
    09-04-2010
    Beiträge
    55

    AW: dynamische Funktionsnamen

    Vielleicht auch eine sinnfreie Lösung und bestimmt kein Glanzstück, aber eine die Funktioniert:

    Code:
    	function ausgeben()
    	{
    		if (http.readyState == 4) 
    			{
    			var datenblock = http.responseText;
    			eval(outfunction)(datenblock);
    			}
    Einfach das verhaßte eval benutzt, "outfunction" in Klammern gepackt und den Inhalt dran gehängt! Alle gängigen Browser nehmen es ohne Probleme an.

  4. #19
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: dynamische Funktionsnamen

    BITTE... verwende das nicht!
    Du darfst die Funktion nicht als Funktionsnamen (String) übergeben, sondern muss diese als Refernz übergeben.

  5. #20
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: dynamische Funktionsnamen

    Zitat Zitat von chappy_berlin Beitrag anzeigen
    Vielleicht auch eine sinnfreie Lösung und bestimmt kein Glanzstück, aber eine die Funktioniert:
    Wenn du uns zeigen würdest, wie du die Funktion aufrufst und wo du die Funktionsreferenz übergibst, wäre das nicht nötig.

    Wir können bei deinem seltsamen Code nur raten was du falsch machst. Wenn uebersichtcontent deine Funktion ist, dann sähe der aufruf so aus:
    Code:
    function startpart()
    	{
    	datenconnect(file03,"","",uebersichtcontent);
    	}

  6. #21
    Avatar von jspit
    jspit ist offline Lounge-Member
    registriert
    19-06-2009
    Beiträge
    1.712

    AW: dynamische Funktionsnamen

    Wenn man dich absolut nicht von den functionsreferenzen überzeugen kann, dann nimm bitte das window-object statt eval:
    Code:
    	function ausgeben()
    	{
    		if (http.readyState == 4) 
    			{
    			var datenblock = http.responseText;
    			window[outfunction](datenblock);
    			}

  7. #22
    chappy_berlin ist offline Eroberer
    registriert
    09-04-2010
    Beiträge
    55

    AW: dynamische Funktionsnamen

    Die Aussage ist weder überheblich noch arrogant gemeint, aber bin so langsam am verzweifeln und hatte unter einer Vielzahl von Google Seiten diese Möglichkeit gefunden. Weiß aber auch, daß alle guten Seiten und alle guten Statements von "eval" abraten.

    Dieser Code ist immer dann vorhanden, wenn eine Ajax Aktion ausgeführt werden soll. Also nur der Teil "dataconnect()" ist immer identisch für die Ajaxfunktion.

    Code:
    function startpart()
    	{
    	datenconnect(file03,"","",uebersichtcontent);
    	}
    Es werden nur die jeweils notwendigen Parameter geändert.

    Ich starte jetzt einen neuen Versuch, eine Funktionsreferenz hinzubekommen.

    ein schlauer:

    Ja, "uebersichtcontent" ist ein Beispiel für eine weiterverarbeitende Funktion. Weiterhin kommen die Funktionen "datacontentlevelfirst,datacontentlevelsecond,updatewrite,insertwrite" dazu und 2 weiter benötige ich noch. Daher will ich die Funktionen in globalen Variablen hinterlegt haben und dann über die Funktion "datenconnect" (ajax Funktion) im vierten Parameterübersenden, um die Ajax Ausgabefunktion nicht unnötig aufzublähen.

  8. #23
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: dynamische Funktionsnamen

    Zitat Zitat von chappy_berlin Beitrag anzeigen
    Ja, "uebersichtcontent" ist ein Beispiel für eine weiterverarbeitende Funktion. Weiterhin kommen die Funktionen "datacontentlevelfirst,datacontentlevelsecond,updatewrite,insertwrite" dazu und 2 weiter benötige ich noch. Daher will ich die Funktionen in globalen Variablen hinterlegt haben und dann über die Funktion "datenconnect" (ajax Funktion) im vierten Parameterübersenden, um die Ajax Ausgabefunktion nicht unnötig aufzublähen.
    Du musst nichts in globalen Variabeln hinterlegen, weil Funktionen schon "hinterlegt" sind, über ihren Namen. Wie gesagt, wenn wir wüßten was du machst könnten wir dir helfen. Hilfreich wäre es auch, wenn du dir klar machst WAS Funktionsreferenzen sind und wie man sie verwendet.

  9. #24
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: dynamische Funktionsnamen

    Um das mal ein bisschen auszuführen, das tolle ist, dass eigentlich auch gar keine globalen Funktionen brauchst, wenn du mit closures arbeitest oder lokale Funktionen deklarierst.

    Hier mal ein kurzes Beispiel:

    Code:
    function makeFunction(p) {
       function localAlert() {
          alert('Hallo ' + p);
       };
       return localAlert;
    }
    
    var chappy_berlin = makeFunction('chappy_berlin');
    chappy_berlin();
    Geändert von ein schlauer (18-07-2011 um 23:22 Uhr) Grund: var oder my, das ist hier die Frage?

  10. #25
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: dynamische Funktionsnamen

    @ein schlauer: bitte nicht Perl mit JS mischen

  11. #26
    chappy_berlin ist offline Eroberer
    registriert
    09-04-2010
    Beiträge
    55

    AW: dynamische Funktionsnamen

    Sorry, aber ich sehen den Wald vor lauter Bäumen nicht!

    Versuche mit seit gestern in Funktionsreferenzen, aber die wollen absolut nicht wie ich!

    Code:
    function datenconnect(file, datacontent, outpart, outfunction){
    	
    	var http = null;
    	if (window.XMLHttpRequest) {
    		http = new XMLHttpRequest();
    	}
    	else 
    		if (window.ActiveXObject) {
    			http = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	if (http != null) {
    		http.open("POST", file, true);
    		http.onreadystatechange = ausgeben;
    		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		http.send(datacontent);
    	}
    	
    	function ausgeben()
    	{
    		if (http.readyState == 4) 
    			{
    			//var datenblock = http.responseText;
    			//window[outfunction](datenblock);
    			datenconnect(http.responseText);
    			
    			}
    	}
    }
    ausgeben(uebersichtcontent);
    Dann kommt die Felhlermedlung: "Fehler: attempt to run compile-and-go script on a cleared scope
    Quelldatei: http://localhost/INTERNE_DV/shopsyst...ajaxkernel1.js
    Zeile: 20"

    und bei
    Code:
    datenconnect(uebersichtcontent);
    in der letzten Zeile kommt: "Fehler: ausgeben is not defined
    Quelldatei: http://localhost/INTERNE_DV/shopsyst...ajaxkernel1.js
    Zeile: 29"

    Was um alles in der Welt übersehe oder verstehe ich nicht???

  12. #27
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: dynamische Funktionsnamen

    Die erste Fehlermeldung ist mir unbekannt und habe ich noch nie gesehen. Von welchem Browser stammt die?

    Zitat Zitat von chappy_berlin Beitrag anzeigen
    und bei
    Code:
    datenconnect(uebersichtcontent);
    in der letzten Zeile kommt: "Fehler: ausgeben is not defined
    Quelldatei: http://localhost/INTERNE_DV/shopsyst...ajaxkernel1.js
    Zeile: 29"

    Was um alles in der Welt übersehe oder verstehe ich nicht???
    Klar, ausgeben ist nicht definiert und keiner hat gesagt, dass du ausgeben aufrufen kannst oder sollst.


    Code:
    function datenconnect(file, datacontent, outpart, outfunction){
    	
    	var http = null;
    	if (window.XMLHttpRequest) {
    		http = new XMLHttpRequest();
    	}
    	else 
    		if (window.ActiveXObject) {
    			http = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	if (http != null) {
    		http.open("POST", file, true);
    		http.onreadystatechange = ausgeben;
    		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		http.send(datacontent);
    	}
    	
    	function ausgeben()
    	{
    		if (http.readyState == 4) 
    			{
    			outfunction(http.responseText);
    			
    			}
    	}
    }
    datenconnect(url, '', '', function(txt) { alert(txt);});
    Aber du scheinst irgendwie das Konzept nicht verstanden zu haben. Hast du meinen Code mal ausprobiert?

  13. #28
    chappy_berlin ist offline Eroberer
    registriert
    09-04-2010
    Beiträge
    55

    AW: dynamische Funktionsnamen

    Zitat Zitat von ein schlauer Beitrag anzeigen
    Die erste Fehlermeldung ist mir unbekannt und habe ich noch nie gesehen. Von welchem Browser stammt die?
    Diese Meldung stammt aus der Fehlerkonsole von Mozilla Firefox 5.0.

    Aber du scheinst irgendwie das Konzept nicht verstanden zu haben.
    Ja, ich gebe Dir uneingeschränkt recht. Habe nach Funktionsreferenzen geGooglet. Bisher habe ich aber nur gefunden, daß der Unterschied zur Funktion lediglich das weglassen der "()" ist.

    Die einzigste Lösung die ich zum laufen bekommen habe, ist die von jspit mit
    Code:
    window[outfunction](datenblock);
    .
    Geändert von chappy_berlin (20-07-2011 um 10:00 Uhr)

  14. #29
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: dynamische Funktionsnamen

    Zitat Zitat von chappy_berlin Beitrag anzeigen
    Ja, ich gebe Dir uneingeschränkt recht. Habe nach Funktionsreferenzen geGooglet. Bisher habe ich aber nur gefunden, daß der Unterschied zur Funktion lediglich das weglassen der "()" ist.
    aus dem Grund hatte ich dir das Beipsiel gezeigt, wenn du das nachvollziehen kannst, weißt du was Funktionsreferenzen sind.

    Mein Beispiel funktioniert auch, wenn es bei dir nicht funktioniert, dann machst du etwas falsch. Aber du hast meinen Vorschlag bisher nicht umgesetzt (der letzte Code, war wieder etwas anderes, als ich dir gezeigt hatte)

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Dynamische URL
    Von martl666 im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 09-01-2009, 14:26
  2. Dynamische Funktionsnamen
    Von tobi-848 im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 30-10-2008, 11:11
  3. Konstanten / Funktionsnamen etc.
    Von stormwind im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 09-10-2007, 22:00
  4. Dynamische Url
    Von DerPaul im Forum JavaScript
    Antworten: 8
    Letzter Beitrag: 27-08-2007, 22:04
  5. Antworten: 30
    Letzter Beitrag: 11-10-2006, 10:19

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •