kostenloser Webspace werbefrei: lima-city


Variablen vergleichen

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Danke für die Erklärung, da habe ich ja glatt was richtig verstanden und gelernt heute. Ein Traum.

    Dann werd ich mal die restlichen if-block´s mit rein machen für die fehlenden Booster und das war´s dann damit.

    Dann werd ich mir mal das mit
    gidon
    anschauen.


    Danke, Danke, DANKE
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    Dann werd ich mal die restlichen if-block´s mit rein machen für die fehlenden Booster und das war´s dann damit.
    Wenn das immer mit 'ATT: ' beginnt und dann die Zahl kommt gibt es eine weit einfachere Lösung als die ifs:
    var boost = boostoff.substring(5);


    aff3m1tw4ff3 schrieb:
    Dann werd ich mir mal das mit
    gidon
    anschauen.
    Die Ursache + Lösung dazu wurde sogar schon in einem anderen Thread von dir gezeigt (nur dort bei einer anderen Variablen)...
  4. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Morgen,

    also die restlichen Booster habe ich nun über if-blöcke geregelt, es sind aber auch welche bei die nicht mit ATT: beginnen. Das sieht nun so aus.

    if(boostoff == 'ATT: 4')
                {boost = 'A4';}
    	    else if(boostoff == 'ATT: 3')
                {boost = 'A3';}
            else if(boostoff == 'ATT: 2')
                {boost = 'A2';}
    	    else if(boostoff == 'ATT: 1')
                {boost = 'A1';}
    	    else if(boostoff == 'DEF: 1')
                {boost = 'D1';}
    	    else if(boostoff == 'DEF: 2')
                {boost = 'D2';}
    	    else if(boostoff == 'DEF: 3')
                {boost = 'D3';}
    	    else if(boostoff == 'DEF: 4')
                {boost = 'D4';}


    Bei
    gidon
    muss ich erst mal den Fehler finden um zu verstehen was da passiert.
    Mit deinem Hinweis auf den anderen Fred habe ich mal folgendes geändert:

    var gidon = content.split('<a href="/profil/bande:')[1];
    var gidoff = (gidon != undefined) ? gidon.split('/')[0].trim() : '';


    Läuft soweit super, ist sogar bissl schneller im Aufbau. Wobei ich nicht weiß ob das nun vom
    "trim" kommt oder nur am Wetter liegt :)

  5. Warum soviel Code? Was machst du wenn du irgendwann auf die Idee kommst ATT und DEF bis 10000 gehen lassen zu wollen?
    Das könntest du mit folgender Zeile viel eleganter lösen:
    boostoff = boostoff.replace(boostoff.substr(1,4), '');
    Spart dir viel Schreibarbeit, und spart auch etwas an zu übertragender Datenmenge.

    mfg
  6. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Zum Glück sind die Booster begrenzt, es fehlen jetzt noch genau 2. Bei denen weiß ich allerdings noch nicht wie Sie im
    Quelltext stehen, das konnte ich noch nicht testen.

    Um deinen Ansatz mal zu verstehen muss ich fragen ob ich das richtig verstehe.

    Durch das
    replace
    werden dort das 1 und das 4 Zeichen entfernt?

    boostoff = boostoff.replace(boostoff.substr(1,4), '');


    LG
  7. .substr gibt dir die Teilzeichenkette vom 2. bis zum 5. Zeichen (da das ganze 0-basiert ist) [in deinem fall also "TT: " oder "EF: "]
    .replace ersetzt eine Zeichenfolge in einem String durch eine andere [in deinem fall also "TT: " und "EF: " durch "" (Leerstring)]

    Nachzulesen hier:
    http://de.selfhtml.org/javascript/objekte/string.htm#substr
    http://de.selfhtml.org/javascript/objekte/string.htm#replace

    mfg
  8. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Ich weiß garnicht was ich nu sagen soll, Ihr seid ja echt Hammer hier.
    Hab das mal Probiert und es geht. Das beste ist dazu noch, ich habe es verstanden.
    Von 10 Zeilen auf 1 is natürlich ein enormer Unterschied.

    Auf SELFHTML war ich auch gerade um das zu verstehen.

    Mal noch eine Frage dazu, hackyourlife hatte dafür ja folgenden Code vorgeschlagen,

    var boost = boostoff.substring(5);


    Wenn ich das richtig verstanden habe wird in dem Fall einfach das 5te Zeichen im String ausgelesen?


    Tante Edit:


    Mal noch eine Frage dazu, ich habe nun auch Booster die aus der Reihe fallen.
    In diesem Fall werden 2 Werte angegeben, kann man hier einfach nochmal mit einem if-block vorher prüfen bevor man über
    .supstr
    und
    .replace
    die Zeichen entfernt?

    <!-- so siehts bisher aus -->
    
    
    <span><b>Stärkung:</b><br />
    ATT: 2<br />
    <br />
    
    <!-- nun kommt bei einem Booster eine weitere Zeile dazu -->
                              
    
    <span><b>Stärkung:</b><br />
    ATT: 2<br />
    DEF: 3<br />
    <br />



    Wenn ich das richtig sehe habe ich hier ja nun ein Problem mit dem Code da mir ja die Zeichen "abgeschnitten werden.
    Im Idealfall sollte er mir diesen Booster nun mit
    var boost = '5'
    belegen.


    Beitrag zuletzt geändert: 5.9.2012 13:07:34 von aff3m1tw4ff3
  9. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    syberpsace schrieb:
    Das könntest du mit folgender Zeile viel eleganter lösen:
    boostoff = boostoff.replace(boostoff.substr(1,4), '');
    Spart dir viel Schreibarbeit, und spart auch etwas an zu übertragender Datenmenge.
    Ist aber unnütz... wenn du dir meinen Code angesehen hättest würdest du festgestellt haben, dass das genau das gleiche in nur einer einzigen Anweisung macht.

    aff3m1tw4ff3 schrieb:
    Mal noch eine Frage dazu, hackyourlife hatte dafür ja folgenden Code vorgeschlagen,

    var boost = boostoff.substring(5);


    Wenn ich das richtig verstanden habe wird in dem Fall einfach das 5te Zeichen im String ausgelesen?
    Das gibt den String ab dem 5. Zeichen (bis zum Ende des Strings) zurück.

    Wie ich gerade sehe musst du aber den Code noch etwas anpassen um das gewünschte Ergebnis zu erzielen:
    var boost = boostoff.charAt(0) + boostoff.substring(5);


    aff3m1tw4ff3 schrieb:
    In diesem Fall werden 2 Werte angegeben, kann man hier einfach nochmal mit einem if-block vorher prüfen bevor man über
    .supstr
    und
    .replace
    die Zeichen entfernt?

    <!-- so siehts bisher aus -->
    
    
    <span><b>Stärkung:</b><br />
    ATT: 2<br />
    <br />
    
    <!-- nun kommt bei einem Booster eine weitere Zeile dazu -->
                              
    
    <span><b>Stärkung:</b><br />
    ATT: 2<br />
    DEF: 3<br />
    <br />



    Wenn ich das richtig sehe habe ich hier ja nun ein Problem mit dem Code da mir ja die Zeichen "abgeschnitten werden.
    Im Idealfall sollte er mir diesen Booster nun mit
    var boost = '5'
    belegen.
    Hierbei würde nur das ATT berücksichtigt, da du das
    boostoff
    durch ein split bei
    <br />
    bestimmst, was dir nur das ATT zurückgibt und den Rest verwirft.
  10. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Die Version musste ich mir nun auch noch anschauen, man will ja wissen was so geht ;)

    var boost = boostoff.charAt(0) + boostoff.substring(5);


    Ergibt ja vom Prinzip genau das Gleiche wie der andere Code, was da nun besser ist kann ich nicht beurteilen.
    Dankbar bin ich für beide Ansätze.

    Allerdings scheint das mit dem 2ten Wert ja eh zu einem Problem zu werden durch den Split.

    <a class="tooltip" href="#">
    <div class="style_buff" > Deine Kampfkraft ist temporär gesteigert</div>
    <span><b>Stärkung:</b><br />
    ATT: 2<br />
    DEF: 3<br />
    <br />
    Noch <b>1</b> mal benutzbar<br />
    </span></a>
    </div>


    Da muss ich jetzt mal testen ob das Wort
    Noch
    bei jedem Booster verfügbar ist. Dann könnte ich den Split ja dort ansetzen.

    Man müsste ja rein Theoretisch mit einer 2ten Variablen in die man den 2ten Wert schreibt arbeiten können.

    Also Quasi

    var boosta = boostoff.charAt(0) + boostoff.substring(5);
    var boostb = boostoff.substring(10);
    var boost = boosta+boostb; // wird sicher anders berechnet (soll halt mathematisch sein)


    So da werde ich mich jetzt mal dran setzen und schauen was passiert.
    Gespannt ich bin.
  11. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    aff3m1tw4ff3 schrieb:
    Die Version musste ich mir nun auch noch anschauen, man will ja wissen was so geht ;)

    var boost = boostoff.charAt(0) + boostoff.substring(5);


    Ergibt ja vom Prinzip genau das Gleiche wie der andere Code, was da nun besser ist kann ich nicht beurteilen.
    Der ursprüngliche Code hat nur die Zahl in die Variable gespeichert, jetzt bekommst du deine 'A3' oder 'D1' ... also mit dem Buchstaben davor.

    aff3m1tw4ff3 schrieb:
    Man müsste ja rein Theoretisch mit einer 2ten Variablen in die man den 2ten Wert schreibt arbeiten können.

    Also Quasi

    var boosta = boostoff.charAt(0) + boostoff.substring(5);
    var boostb = boostoff.substring(10);
    var boost = boosta+boostb; // wird sicher anders berechnet (soll halt mathematisch sein)


    So da werde ich mich jetzt mal dran setzen und schauen was passiert.
    Gespannt ich bin.
    Was willst du damit erreichen? Irgendwie durchschaue ich den Sinn (falls es einen hat) nicht...

    aff3m1tw4ff3 schrieb:
    Allerdings scheint das mit dem 2ten Wert ja eh zu einem Problem zu werden durch den Split.

    <a class="tooltip" href="#">
    <div class="style_buff" > Deine Kampfkraft ist temporär gesteigert</div>
    <span><b>Stärkung:</b><br />
    ATT: 2<br />
    DEF: 3<br />
    <br />
    Noch <b>1</b> mal benutzbar<br />
    </span></a>
    </div>


    Da muss ich jetzt mal testen ob das Wort
    Noch
    bei jedem Booster verfügbar ist. Dann könnte ich den Split ja dort ansetzen.
    Wo soll da das Problem sein? Auch wenn ich jetzt nicht mehr weiß was der HTML-Code ist wenn nur ein Boost angegeben ist wäre das mein Ansatz:
    GM_xmlhttpRequest({
        method: 'GET',
        url: link+'/fight/',
        onload: function(responseDetails) {
            var contentstring = responseDetails.responseText;
            var suchstring = /(Stärkung)/g;
     
            var boost = 'No';
            var boost2 = '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(); // der 1. Boost
                boost2 = booston.split('<br />')[1].trim(); // der 2. Boost
                boost = boostoff.charAt(0) + boostoff.substring(5);
                // 'nur ein boost' musst du anpassen
                // entfern dazu den Kommentar in der nächsten Zeile:
                // alert('\'' + boost2 + '\'');
                boost2 = (boost2 != 'nur ein boost') : boost2.charAt(0) + boost2.substring(5) : 'No';
            }
    Du solltest mit
    alert
    den Inhalt der Variablen
    boost2
    ausgeben um herauszufinden was da drin steht wenn es nur einen Boost gibt, damit du dann per if entscheiden kannst ob es 2 Boosts gibt.
  12. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,

    so mal der Vollständigkeit halber, ich habe das Ganze jetzt mit dem Ansatz von hackyourlife so gelöst.

    GM_xmlhttpRequest({
        method: 'GET',
        url: link+'/fight/',
        onload: function(responseDetails) {
            var contentstring = responseDetails.responseText;
            var suchstring = /(Stärkung)/g;
      
            var boost = '--';
            var boost2 = 'No';
            var booston = '';
            var boostoff = '<img src="http://www.pennereck.de/kw_button/nein.png" width="12" height="12" class="image" title="Du hast keinen Booster aktiviert!"/>';
      
            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(); // der 1. Boost
                boost2 = booston.split('<br />')[1].trim(); // der 2. Boost
                boost = boostoff.charAt(0) + boostoff.substring(5); // beschneiden auf 2 Zeichen Boost 1
                boost2 = boost2.charAt(0) + boost2.substring(5); // beschneiden auf 2 Zeichen Boost 2
    
            }
    		
    		if (boost2 == 'D3') //prüfen ob boost A2+D3 angelegt
    		   {
    			boost = 'X5'; // wenn A2+D3 dann Variable belegen für DB
    		    boostoff = 'A2 + D3' // Ausgabe Button
    		    }
    			
    		if (boostoff == 'ATT: 10') //prüfen ob Berserker benutzt wird
    		   {
    			boost = '10'; // wenn Berserker benutzt dann Variable belegen für DB
    		    boostoff = 'Du Tier ;)' // Ausgabe Button
    		    }


    hackyourlife schrieb:

    var boosta = boostoff.charAt(0) + boostoff.substring(5);
    var boostb = boostoff.substring(10);
    var boost = boosta+boostb; // wird sicher anders berechnet (soll halt mathematisch sein)

    Was willst du damit erreichen? Irgendwie durchschaue ich den Sinn (falls es einen hat) nicht...


    Oh man, ich hab kein Plan wie quer ich da gedacht habe. Ist natürlich so völlig Sinn frei.
    Ich weiß nicht wie ich darauf gekommen bin, aber ich habe mich dabei ja nun an Deinen Ansatz gehalten.

    Es läuft jetzt auch alles wie ich es wollte. Danke nochmal für die Super Hilfe.

    LG Marco
  13. b**********m

    Wieso kreierst du nicht die Boostvariable durch die Zahl bzw. ID in der Boostoff Variable?
  14. 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!