kostenloser Webspace werbefrei: lima-city


Variablen vergleichen

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,

    mein altes Thema kann ich leider nichtmehr bearbeiten oder darauf Antworten da ich der letzte war der dort schrieb und es schon zu lange her ist. Darum hier nochmal neu. ( zum alten Thema)


    Ich habe das Problem, das sich der Code aufhängt, lösen können.

    GM_xmlhttpRequest({
    	method: 'GET',
    	url: link+'/fight/',
    	onload: function(responseDetails) {
            var contentstring = document.body.parentNode.innerHTML
            var suchstring = /(Stärkung)/g;
     
             var suchergebnis = suchstring.test( contentstring );
            if (suchergebnis != false)
    	{
    	
    	var content = responseDetails.responseText;
    	var booston = content.split('<span><b>Stärkung:</b><br />')[1];
    	var boostoff = booston.split('<br />')[0];
    	
        }
    
           else
       {
       var boost = 'No';
    }



    In der Variable "boostoff" habe ich nun immer den angelegten Booster der aus dem Quelltext ausgelesen wird.
    So wie die Variable nun ausgelesen wird, ist Sie mir allerdings zu lang, ich würde Sie gern "umwandeln" bevor Sie an die DB übergeben wird.


    als Bsp.:

    Für die Variable Boostoff wurde als Inhalt "ATT: 3 ermittelt, so soll in der DB am Ende nur A3 gespeichert werden.

    Also in etwa so:
    if (boostoff = 'ATT: 3') {
    	
    	var boost = 'A3';
    }
    else if (boostoff = 'ATT: 2') {
    	
    	var boost = 'A2';
    }




    Vieleicht hat ja jemand eine Idee für mich wo ich da jetzt ansetzen kann, oder besser wie ich ansetze.

    Danke schon mal und schöne Woche euch
    LG Marco
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. In deinen if clauses weist du zu, und vegleichst nicht. Probier mal:

    if (boostoff == 'ATT: 3') {
    	
    	var boost = 'A3';
    }
    else if (boostoff == 'ATT: 2') {
    	
    	var boost = 'A2';
    }
  4. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Und wieder was verstanden :)

    Geht aber leider auch nicht dabei gilt die Variable dann als nicht definiert (undefined wird angezeigt)
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    Geht aber leider auch nicht dabei gilt die Variable dann als nicht definiert (undefined wird angezeigt)
    Kann es ja auch gar nicht funktionieren, da die Variable
    boost
    nur innerhalb des if-Blocks gültig ist, weil sie dort auch definiert wird...

    Versuch es so:
    var boost = '';// hier draußen muss die Variable angelegt werden!
    
    if(boostoff == 'ATT: 3')
    	boost = 'A3';
    else if(boostoff == 'ATT: 2')
    	boost = 'A2';
  6. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    hackyourlife schrieb:
    Kann es ja auch gar nicht funktionieren, da die Variable
    boost
    nur innerhalb des if-Blocks gültig ist, weil sie dort auch definiert wird...


    Ok, das hab ich mal getestet, geht so aber auch nicht, dabei wird die Variable mit "nichts" belegt. Es wird also direkt
    var boost = '';
    verwendet und die Zuweisung im if-Block einfach übergangen wenn ich das jetzt richtig verstehe.

    Allerdings weiß ich nun gerade nicht an welcher Stelle ich den if-Block nun einfügen muss. Die Variable
    boostoff
    wird ja ebenfalls in einem if-Block ermittelt, muss ich das dann auch noch mit beachten?

    Derzeit sieht die Codestelle bei mir so aus:
    GM_xmlhttpRequest({
    	method: 'GET',
    	url: link+'/fight/',
    	onload: function(responseDetails) {
        var contentstring = document.body.parentNode.innerHTML
        var suchstring = /(Stärkung)/g;
     
        var suchergebnis = suchstring.test( contentstring );
            if (suchergebnis != false)
    	{
    	
    	var content = responseDetails.responseText;
    	var booston = content.split('<span><b>Stärkung:</b><br />')[1];
    	var boostoff = booston.split('<br />')[0];
    	
        }
    	
           else
       {
       var boost = 'No';
    }
    
    var boost = '';// hier draußen muss die Variable angelegt werden!
     
    if(boostoff == 'ATT: 3')
    {
        boost = 'A3';
    	
    }
    else if(boostoff == 'ATT: 2')
    
    {
        boost = 'A2';
    	
    }




  7. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    Ok, das hab ich mal getestet, geht so aber auch nicht, dabei wird die Variable mit "nichts" belegt. Es wird also direkt
    var boost = '';
    verwendet und die Zuweisung im if-Block einfach übergangen wenn ich das jetzt richtig verstehe.
    Versuch mal diesen Code, der sollte funktionieren (ungetestet):
    GM_xmlhttpRequest({
    	method: 'GET',
    	url: link+'/fight/',
    	onload: function(responseDetails) {
    		var contentstring = document.body.parentNode.innerHTML
    		var suchstring = /(Stärkung)/g;
    
    		var boost = 'No';
    		var booston = '';
    		var boostoff = '';
    
    		var suchergebnis = suchstring.test(contentstring);
    		if(suchergebnis != false) {
    			var content = responseDetails.responseText;
    			var booston = content.split('<span><b>Stärkung:</b><br />')[1];
    			var boostoff = booston.split('<br />')[0];
    		}
    
    		if(boostoff == 'ATT: 3')
    			boost = 'A3';
    		else if(boostoff == 'ATT: 2')
    			boost = 'A2';
    	}
    });
  8. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Da kommt auch wieder das raus was außerhalb des if-Blocks deklariert wird.
    Also
    boost = 'no'


    Wenn ich jetzt
    boostoff
    anspreche erhalte ich
    undefined

    da wird also auch wieder die Variable außerhalb des if-Blocks angesprochen
    var boostoff = '';



    Mal eine Frage zum Verständniss für mich, ich versuche ja auch das irgendwie zu verstehen :)

    Warum lässt Du bei den if-Block´s immer die geschweiften Klammern weg?

    if(boostoff == 'ATT: 3')
                boost = 'A3';
            else if(boostoff == 'ATT: 2')
                boost = 'A2';
    
    
    // ich kenne das irgendwie so
    
            if(boostoff == 'ATT: 3')
               { boost = 'A3';}
            else if(boostoff == 'ATT: 2')
               { boost = 'A2';}


    Ich gehe davon aus, das es so wie du es machst wohl richtig ist. Meine Frage ist, ist mein´s falsch?
  9. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    Da kommt auch wieder das raus was außerhalb des if-Blocks deklariert wird.
    Achso, verdammt, hab ja die
    var
    von deinem Code übernommen, obwohl die dort nicht hingehören... also so soll es aussehen:
    GM_xmlhttpRequest({
    	method: 'GET',
    	url: link+'/fight/',
    	onload: function(responseDetails) {
    		var contentstring = document.body.parentNode.innerHTML
    		var suchstring = /(Stärkung)/g;
    
    		var boost = 'No';
    		var booston = '';
    		var boostoff = '';
    
    		var suchergebnis = suchstring.test(contentstring);
    		if(suchergebnis != false) {
    			var content = responseDetails.responseText;
    			booston = content.split('<span><b>Stärkung:</b><br />')[1];
    			boostoff = booston.split('<br />')[0];
    		}
    
    		if(boostoff == 'ATT: 3')
    			boost = 'A3';
    		else if(boostoff == 'ATT: 2')
    			boost = 'A2';
    	}
    });


    aff3m1tw4ff3 schrieb:
    Warum lässt Du bei den if-Block´s immer die geschweiften Klammern weg?

    ..

    Ich gehe davon aus, das es so wie du es machst wohl richtig ist. Meine Frage ist, ist mein´s falsch?
    Ich lasse die Klammern nur da weg, wo man sie auch weglassen darf, was aber nicht bedeutet, dass deine Version falsch ist ;-)

    Wenn der Code innerhalb eines
    if
    oder
    for
    -Blockes nur eine Anweisung (Anweisung = bis zum nächsten
    ;
    ) lang ist darf man sich die Klammern sparen, ansonsten müssen sie dort stehen.

    Beitrag zuletzt geändert: 3.9.2012 20:11:54 von hackyourlife
  10. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Das Ergebniss bleibt leider das gleiche, es werden die Variablen außerhalb des if-Block verwendet.

    hackyourlife schrieb:
    Wenn der Code innerhalb eines if oder for-Blockes nur eine Anweisung (Anweisung = bis zum nächsten ; ) lang ist darf man sich die Klammern sparen, ansonsten müssen sie dort stehen.


    mit dem Thema if-for sollte ich mich wohl dringend intensiver beschäftigen.
    Die Abfrage ist ja nur ein "Teilstück" aus meinem Script. Ich beende die jeweilige Anweisung also erst später.

    Der Code is leider bissl zu lang für hier, darum hier mal die Datei

    Die
    }});
    stehen bei mir als letztes. Demnach müsste ich die Anweisung in dem Fall in geschweiften Klammern setzen oder?

    Getestet hab ich natürlich beides, ging leider nix.
  11. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    Das Ergebniss bleibt leider das gleiche, es werden die Variablen außerhalb des if-Block verwendet.

    ...

    Der Code is leider bissl zu lang für hier, darum hier mal die Datei
    Das liegt daran, dass du den Code nicht 1:1 kopiert hast sondern Teile verschoben hast, und zwar den Block mit den Variablendeklarationen. Kopier dir nocheinmal den Code von meinem letzten Post, aber 1:1 (außer den letzten beiden Zeilen) und schau dann ob es funktioniert.

    aff3m1tw4ff3 schrieb:
    Die
    }});
    stehen bei mir als letztes. Demnach müsste ich die Anweisung in dem Fall in geschweiften Klammern setzen oder?
    Vergiss die letzten beiden Zeilen in meinem Code (also die
    }});
    ) ;-)
  12. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Ah, Sorry, hatte da noch bissl getestet geht aber auch so nicht.

    Ich habe deinen Code jetzt nochmal so übernommen, ohne die Kollegen
    }});
    am Ende.
    Dann bekomme ich einen Syntaxfehler in der Variable nach dem Code.

    Wenn ich dann noch
    }
    aus deinem Code am Ende entferne ist der Syntaxfehler weg.

    Es wird aber weiterhin auf die Variable außerhalb des if-Block´s zugegriffen.

    Man, man was eine kleine Umwandlung doch an Arbeit macht, das hätte ich nie gedacht.
  13. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    Ah, Sorry, hatte da noch bissl getestet geht aber auch so nicht.
    Kann man das mal wo in Aktion sehen?
  14. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Wirklich spontan in Aktion sehen geht leider nicht ohne nen Pennergame Account.
    Ich hab Dir mal eine Nachricht geschickt. Das Hilft vieleicht weiter.

    Danke
  15. aff3m1tw4ff3 schrieb:
    In der Variable "boostoff" habe ich nun immer den angelegten Booster der aus dem Quelltext ausgelesen wird.


    Hier muss ich kurz mal Zwischenfunken, wird das aus dem HTML Quelltext ausgelesen? Diesen kann man schnell ohne große Probleme vorher modifizieren, sodass im Endeffekt vllt ein verfälschtest Ergebnis rauskommen könnte.
  16. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    @copynpaste

    Ja es wird aus dem Quelltext ausgelesen, ich weiß auch das man dort manuell trixen könnte wenn man will.
    Da das Script mit Greasmonkey ausgeführt wird, kann der User ja eh manuell nacharbeiten wenn er will, da es ja auf seinem Rechner ist.

    Einen wirklichen Vorteil verschafft man sich dadurch aber nicht. Man würde sich eher selber "verarschen".
    Die daraus entstehende Übersicht, stellt eine Tabelle mit Daten von Usern einer "Bande" dar. Sie vergleichen sich damit Quasi gegenseitig.
    Wenn sich da einer mit Trix Vorteile verschaffen will ist das zum Glück nur sein Ego was gestärkt wird.

  17. Wie wärs mit einem Strichpunkt nach
    var contentstring = document.body.parentNode.innerHTML
    ?

    hackyourlife schrieb:
    Wenn der Code innerhalb eines
    if
    oder
    for
    -Blockes nur eine Anweisung (Anweisung = bis zum nächsten
    ;
    ) lang ist darf man sich die Klammern sparen, ansonsten müssen sie dort stehen.

    Bleib aber lieber gleich bei der Variante mit den Klammern, auch wenn sie nicht nötig sind.
    Das könnte dir später mal einige Arbeit ersparen. ;)

    Beitrag zuletzt geändert: 4.9.2012 2:26:30 von philippkern
  18. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Morgen,

    den Strichpunkt habe ich mal dazu gemacht, behebt leider das Problem nicht, aber sieht besser aus :)

    Ich werde das mit den geschweiften Klammern in den if-Blocks auch so beibehalten.
    Da jetzt groß rum Experimentieren bricht mir sicher das Genick, da fehlt mir einfach noch das
    Wissen in JavaScript.
  19. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    den Strichpunkt habe ich mal dazu gemacht, behebt leider das Problem nicht, aber sieht besser aus :)
    So, ich habe jetzt eine funktionierende Version:
    GM_xmlhttpRequest({
    	method: 'GET',
    	url: link+'/fight/',
    	onload: function(responseDetails) {
    		var contentstring = responseDetails.responseText;
    		var suchstring = /(Stärkung)/g;
    
    		var boost = 'No';
    		var booston = '';
    		var boostoff = '';
    
    		var suchergebnis = suchstring.test(contentstring);
    		if(suchergebnis != false) {
    			var content = responseDetails.responseText;
    			booston = content.split('<span><b>Stärkung:</b><br />')[1];
    			boostoff = booston.split('<br />')[0].trim();
    		}
    
    		if(boostoff == 'ATT: 3')
    			boost = 'A3';
    		else if(boostoff == 'ATT: 2')
    			boost = 'A2';
    Welchen Sinn hat eine AJAX-Abfrage, wenn du dann das Ergebnis nicht verwendest? Gleich die 1. Zeile nach dem
    function(responseDetails)
    hat den Fehler enthalten. Dann war noch ein weiterer Fehler: die Variable
    boostoff
    muss getrimmt werden, sonst sind lauter Leerzeichen und Zeilenumbrüche darin enthalten.
  20. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    :-o

    Da hätte ich ja noch Jahre gebraucht. Es läuft!! :-D


    Sehe ich das richtig, das der Code so

    var contentstring = document.body.parentNode.innerHTML;


    für die aktuelle Seite benutzt wird, also erst garnicht auf
    url: link+'/fight/',
    reagiert?

    Würde ja gerne noch verstehen was das nun ändert ;)

    Bei dem
    .trim()
    muss ich gestehen das ich da nun komplett auf dem Schlauch stehe.
    Da werde ich gleich mal Google Quälen und schauen was da so "getrimmt" wird.


    Ich danke Dir für die Hilfe, ich habe mal wieder viel gelernt und bemerkt das es noch lange nicht reicht.
  21. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    Sehe ich das richtig, das der Code so

    var contentstring = document.body.parentNode.innerHTML;


    für die aktuelle Seite benutzt wird, also erst garnicht auf
    url: link+'/fight/',
    reagiert?
    Ja, das ist richtig.

    aff3m1tw4ff3 schrieb:
    Bei dem
    .trim()
    muss ich gestehen das ich da nun komplett auf dem Schlauch stehe.
    Da werde ich gleich mal Google Quälen und schauen was da so "getrimmt" wird.
    trim()
    entfernt Whitespace am Anfang und am Ende des Strings. Whitespace = Leerzeichen, Tabulatoren, Zeilenumbrüche ...

    Beispiel:
    var text = '    hallo        ';
    var getrimmt = text.trim(); // getrimmt enthält jetzt 'hallo'
  22. 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!