kostenloser Webspace werbefrei: lima-city


Ablauf einer Funktion, verständniss Problem

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,
    ich habe da mal eine Frage zum Ablauf einer Funktion. Ich habe ein Javascript für Greasmonkey das eine bestimmte Aktion innerhalb eines Browsergames ausführt, es läuft auch alles wie es soll, ABER ich verstehe es an einer Stelle einfach nicht.
    Ich führe in einer Funktion ein alert aus, welches einfach nur anzeigt, was durch eine Schleife gelaufen ist.

    function ende(){
    	// um diesen alert geht es, lasse ich Ihn so drin läuft alles wie gewünscht und die
    	// Zählschleife oben wird richtig durchlaufen. 
    	
    	// nehme ich das alert hier raus, wird beim senden die Zählschleife nicht ausgeführt
    alert (''+marken_einloesen+' von Set Nr. '+set+' eingelöst');
    }
    ende();
    // leitet zurück auf die Startseite und setzt damit alles auf 0
    // das soll passieren wenn die for Schleife fertig durchlaufen ist 
    window.location.href = link;


    Nehme ich nun aus dieser Funktion das alert raus oder entferne die Funktion einfach aus dem Script, streikt gleich das Ganze Script und die Zählschleife wird nicht ausgeführt.

    Hier mal das Stück aus dem Script um das es geht, Script selber ist etwas länger, sollte es nötig sein kann ich es aber auch vollständig posten.




    // getSign ist die Funktion die am Ende auch die Ausgabe startet
    function getSign(){
    	// Prüft ob eine Menge übergeben wurde und startet bei TRUE die Schleife
    	if (menge >= 1)
    {
    	// die schleife zählt dann halt hoch bis < erreicht und spricht bei jedem durchlauf einen Link an
    for (var marken_einloesen = 0; marken_einloesen < menge; marken_einloesen++)
       {
    var request = new XMLHttpRequest();
    request.open('get', ''+link_marken+'', true);
    request.send(null);
       }
    
    }
    // ende zählschleife 
    
    // Schleife prüft ob gerade eine Schleife abgelaufen ist 
    // check wird als GET übergeben  beim ausführen des Scripts 
    // wenn check nicht vorhanden ist, hat der User noch nicht auf senden geklickt
    if (check == 1)
    {
    	// wurde check übergeben soll die funktion ende geladen und ausgeführt werden
    	// zusätzlich soll die Seite neu geladen werden um alles wieder auf "NULL" zu setzen
    function ende(){
    	
    	// um diesen alert geht es, lasse ich Ihn so drin läuft alles wie gewünscht und die
    	// Zählschleife oben wird richtig durchlaufen. 
    	
    	// nehme ich das alert hier raus, wird beim senden die Zählschleife nicht ausgeführt
    alert (''+marken_einloesen+' von Set Nr. '+set+' eingelöst');
    }
    ende();
    window.location.href = link;
    }
    
    var code = 'Hier ist die Ausgabe';
    document.getElementById("provocation_area").innerHTML = code;
    };
    
    
    
    // Initialisierung und Ausgabe des DIV vorbereiten
    				
    			    getSign();


    Das alert würde ich nun gern entfernen und dafür eine art "counter" oder so augeben, evtl. den Stand der Zählschleife, das man sieht wie weit der Vorgang in der Schleife schon ist.

    Dazu muss ich aber erst mal verstehen warum es ohne alert nicht geht, da steh ich mal wieder auf dem Schlauch.

    Danke für Eue Hilfe wie immer
    Gruß Marco
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Der alert ruft mehrere Funktionen auf (z.B. Marken_einlosen). Wenn du jetzt das alert wegnimmst, dann geht logischerweise auch der Funktionsaufruf verloren. Je nach dem wie wichtig diese Funktion ist streikt dann halt das ganze Script. Du musst die Funktion also ohne alert aufrufen. Dafür dann einfach marken_einlösen() anstatt des Alerts. Das musst du natürlich auch für andere Betroffener Funktionen machen.
  4. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Also ich steige da nicht hinter, das alert ruft ja keine Funktion auf, sondern gibt nur Variablen aus.
    Die Funktion, die die Schleife startet, wird ja außerhalb vom alert gestartet.

    Die Schleife wird in der Funktion
    getSign
    aufgerufen und das alert in der Funktion
    ende
    . Ich muss wohl an der Stelle echt zugeben dass es mir zu hoch ist. Wenn ich die Funktion
    Ende
    entferne sollte doch in der Funktion
    getSign
    trotzdem alles normal ablaufen. ( so denke ich mir das )

    Gibt es denn eine Möglichkeit, dem Script zu sagen, es soll doch bitte die Schleife komplett durchlaufen und dann erst den Rest ausführen? Das Hauptproblem ist ja, das die Schleife nicht vollständig durchlaufen wird. Bei kleineren Mengen ( bis 10 ) geht es noch, größere Mengen werden dann aber nicht vollständig ausgeführt.

    Also das in dieser Funktion verweilt wird bis die Schleife durch ist, danach dann die
    Funktion ende starten.

    // getSign ist die Funktion die am Ende auch die Ausgabe startet
    function getSign(){
        // Prüft ob eine Menge übergeben wurde und startet bei TRUE die Schleife
        if (menge >= 1)
    {
        // die schleife zählt dann halt hoch bis < erreicht und spricht bei jedem durchlauf einen Link an
    for (var marken_einloesen = 0; marken_einloesen < menge; marken_einloesen++)
       {
    var request = new XMLHttpRequest();
    request.open('get', ''+link_marken+'', true);
    request.send(null);
       }



    Danke wie immer und Gruß Marco
  5. aff3m1tw4ff3 schrieb:
    Wenn ich die Funktion
    Ende
    entferne sollte doch in der Funktion
    getSign
    trotzdem alles normal ablaufen. ( so denke ich mir das )

    Richtig gedacht.
    ende();
    auch entfernt?
    Alle geschweiften Klammern geschlossen?

    Gibt es denn eine Möglichkeit, dem Script zu sagen, es soll doch bitte die Schleife komplett durchlaufen und dann erst den Rest ausführen? Das Hauptproblem ist ja, das die Schleife nicht vollständig durchlaufen wird. Bei kleineren Mengen ( bis 10 ) geht es noch, größere Mengen werden dann aber nicht vollständig ausgeführt.

    Also das in dieser Funktion verweilt wird bis die Schleife durch ist, danach dann die
    Funktion ende starten.

    Die Schleife wird ganz sicher zuerst durchlaufen.
    Warum du zig-mal den gleichen Request abschicken möchtest, erschließt sich mir nicht.
    Tatsache ist, dass der Server recht bald die Antwort verweigern wird, weil er hinter den immer gleichen Anfragen eine DoS-Attacke vermuten wird. Das ist die Ursache für dein "Mengenproblem".
  6. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,
    als erstes natürlich Danke für die Antwort.

    Mal kurz die Erklärung des immer gleichen Request. Durch den Request werden sogenannte
    „Markensets“ verkauft. Im Normalfall würde der User da sitzen und bei zb. 500 Marekensets, 500 mal auf einlösen klicken. Diese 500
    Klicks soll der Request ausführen.

    Wenn ich das ausgelöste alert, eine Weile stehen lasse, wird die Schleife auch vollständig durchlaufen. Auch wenn es größere Mengen
    sind. Klicke ich das alert weg wird die Schleife ebenfalls beendet und der Request nicht weiter gesendet.

    timebandit schrieb:
    ende();
    auch entfernt?

    Ja habe ich entfernt

    timebandit schrieb:
    Alle geschweiften Klammern geschlossen?

    Ja, habs nochmal geprüft, sind alle zu.


    Ich werd mich da morgen noch einmal dran setzen, irgendwie muss es doch gehen.


    Wünsche euch einen entspannten Sonntag







  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!