Variablen vergleichen
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anschauen
anweisung
block
blocken
code
dank
ende
frage
geschweiften klammern
klammern
problem
schauen
setzen
sinn
stehen
string
test
url
zeichen
zeile
-
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
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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'; }
-
Und wieder was verstanden :)
Geht aber leider auch nicht dabei gilt die Variable dann als nicht definiert (undefined wird angezeigt)
-
aff3m1tw4ff3 schrieb:
Kann es ja auch gar nicht funktionieren, da die Variable
Geht aber leider auch nicht dabei gilt die Variable dann als nicht definiert (undefined wird angezeigt)
nur innerhalb des if-Blocks gültig ist, weil sie dort auch definiert wird...boost
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';
-
hackyourlife schrieb:
Kann es ja auch gar nicht funktionieren, da die Variable
nur innerhalb des if-Blocks gültig ist, weil sie dort auch definiert wird...boost
Ok, das hab ich mal getestet, geht so aber auch nicht, dabei wird die Variable mit "nichts" belegt. Es wird also direkt
verwendet und die Zuweisung im if-Block einfach übergangen wenn ich das jetzt richtig verstehe.var boost = '';
Allerdings weiß ich nun gerade nicht an welcher Stelle ich den if-Block nun einfügen muss. Die Variable
wird ja ebenfalls in einem if-Block ermittelt, muss ich das dann auch noch mit beachten?boostoff
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'; }
-
aff3m1tw4ff3 schrieb:
Versuch mal diesen Code, der sollte funktionieren (ungetestet):
Ok, das hab ich mal getestet, geht so aber auch nicht, dabei wird die Variable mit "nichts" belegt. Es wird also direkt
verwendet und die Zuweisung im if-Block einfach übergangen wenn ich das jetzt richtig verstehe.var boost = '';
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'; } });
-
Da kommt auch wieder das raus was außerhalb des if-Blocks deklariert wird.
Alsoboost = 'no'
Wenn ich jetzt
anspreche erhalte ichboostoff
undefined
da wird also auch wieder die Variable außerhalb des if-Blocks angesprochenvar 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? -
aff3m1tw4ff3 schrieb:
Achso, verdammt, hab ja die
Da kommt auch wieder das raus was außerhalb des if-Blocks deklariert wird.
von deinem Code übernommen, obwohl die dort nicht hingehören... also so soll es aussehen:var
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:
Ich lasse die Klammern nur da weg, wo man sie auch weglassen darf, was aber nicht bedeutet, dass deine Version falsch ist
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?
Wenn der Code innerhalb eines
oderif
-Blockes nur eine Anweisung (Anweisung = bis zum nächstenfor
) 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 -
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. -
aff3m1tw4ff3 schrieb:
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.
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
aff3m1tw4ff3 schrieb:
Vergiss die letzten beiden Zeilen in meinem Code (also die
Die
stehen bei mir als letztes. Demnach müsste ich die Anweisung in dem Fall in geschweiften Klammern setzen oder?}});
)}});
-
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. -
aff3m1tw4ff3 schrieb:
Kann man das mal wo in Aktion sehen?
Ah, Sorry, hatte da noch bissl getestet geht aber auch so nicht. -
Wirklich spontan in Aktion sehen geht leider nicht ohne nen Pennergame Account.
Ich hab Dir mal eine Nachricht geschickt. Das Hilft vieleicht weiter.
Danke -
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. -
@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.
-
Wie wärs mit einem Strichpunkt nach
?var contentstring = document.body.parentNode.innerHTML
hackyourlife schrieb:
Wenn der Code innerhalb eines
oderif
-Blockes nur eine Anweisung (Anweisung = bis zum nächstenfor
) 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 -
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.
-
aff3m1tw4ff3 schrieb:
So, ich habe jetzt eine funktionierende Version:
den Strichpunkt habe ich mal dazu gemacht, behebt leider das Problem nicht, aber sieht besser aus :)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
hat den Fehler enthalten. Dann war noch ein weiterer Fehler: die Variablefunction(responseDetails)
muss getrimmt werden, sonst sind lauter Leerzeichen und Zeilenumbrüche darin enthalten.boostoff
-
Da hätte ich ja noch Jahre gebraucht. Es läuft!!
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
reagiert?url: link+'/fight/',
Würde ja gerne noch verstehen was das nun ändert ;)
Bei dem
muss ich gestehen das ich da nun komplett auf dem Schlauch stehe..trim()
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. -
aff3m1tw4ff3 schrieb:
Ja, das ist richtig.
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
reagiert?url: link+'/fight/',
aff3m1tw4ff3 schrieb:
Bei dem
muss ich gestehen das ich da nun komplett auf dem Schlauch stehe..trim()
Da werde ich gleich mal Google Quälen und schauen was da so "getrimmt" wird.
entfernt Whitespace am Anfang und am Ende des Strings. Whitespace = Leerzeichen, Tabulatoren, Zeilenumbrüche ...trim()
Beispiel:var text = ' hallo '; var getrimmt = text.trim(); // getrimmt enthält jetzt 'hallo'
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage