| 

.NET C# Java Javascript Exception

1
Wie kann ich nur bestimmte Teile einer textual gemachten Konkatenation (innerHTML?) in HTML über Chrome per Javascript-Code als Alert-Box ausgeben? Ich möchte in meinem Fall nur die Rendite ausgeben. Wenn ich folgenden Code in der Chrome-Console ausgebe, wird mir allerdings die komplette innerHTML ausgegeben (Nettogewinn: USD 4.31 | Rendite 76%), wobei ich nur diese 76 beispielsweise in der Alert-Box sehen möchte.

rendite_oben=document.getElementsByClassName("col price_comment")[0].innerHTML;
rendite_unten=document.getElementsByClassName("col price_comment")[1].innerHTML;
alert("Rendite nach oben: " + rendite_oben + "\n" + "Rendite nach unten: " + rendite_unten);

Hier der betroffene HTML-Teil:

<div class="col price_comment">Nettogewinn: USD 4.31 | Rendite 76%</div>
<div class="col price_comment">Nettogewinn: USD 4.30 | Rendite 75%</div>

Wenn man jetzt auf Subtree modifications geht, so landet man bei Sources zur betroffen Stelle, die ich benötige, um den Code zu dieser Rendite ersichtlich zu machen:

function displayCommentPrice(node, currency, type, payout) {
'use strict';

if (node && type && payout) {
var profit = payout - type,
return_percent = (profit/type)*100,
comment = Content.localize().textNetProfit + ': ' + currency + ' ' + profit.toFixed(2) + ' | ' + Content.localize().textReturn + ' ' + return_percent.toFixed(0) + '%';

if (isNaN(profit) || isNaN(return_percent)) {
node.hide();
} else {
node.show();
node.textContent = comment;
}
}
}

Wie kann ich return_percent.toFixed(0) per Javascript-Code abrufen und in meinem bisher genannten dreizeiligen Code einbinden, um es als Alert-Box ausgeben zu können, falls dieser Punkt korrekt ist, um davon auszugehen, dass am Ende auch wirklich nur der Wert der Rendite ausgegeben wird? Denn ich möchte konkret gesagt eine Warnmeldung ausgegeben haben, sobald beide Renditen (hoch und runter) unter 80 % stehen.
News:
10.03.2016
Daniel S. 3 1
2 Antworten
1
Wenn ich Ihre Anforderung richtig verstanden habe, dann werden Sie wohl um einen kleinen Textparser nicht herumkommen, der den Text aus .innerHTML parst und Ihnen die gewünschte Info zurückgibt.
In Ihrem Beispiel müsste man nach dem Wort Rendite suchen und die Zeichen danach auswerten um die Zahl zu extrahieren. Das ließe sich z.B. mit einem RegExp machen, z.B.:
/.*Rendite[\D]*(\d+)/

Der RegExp sucht zunächst nach den Wort Rendite, überspringt dann alle Zeichen, die keine Zahlen sind und sammelt dann alle Zahlen dahinter ein.
Je nach Anwendungsfall kann man den ReExp noch verfeinern.

Vielleicht hilft es ja weiter.
10.03.2016
edvservice 1,2k 6
0
Soweit alles gut, danke. Die alleinige Summe der Rendite wird mir angezeigt durch die Verwendung von [1]. Dann habe ich diesen Wert noch in einen Wert, also Integer umgewandelt, damit eine Prüfung mathematisch korrekt ablaufen kann. Jedoch soll erst die Alert-Box auftauchen, wenn erkannt wird (vielleicht durch Scan?), dass sowohl int1 als auch int2 unter 80 stehen. Wie kann ich das erreichen, dass durchgängig geprüft wird?
var rendite_oben = this.document.getElementById('price_container_top').getElementsByClassName('col price_comment')[0].innerHTML;
var rendite_unten = this.document.getElementById('price_container_bottom').getElementsByClassName('col price_comment')[0].innerHTML;
var regex = /.*Rendite[\D]*(\d+)/;
var match1 = regex.exec(rendite_oben);
var match2 = regex.exec(rendite_unten);
var int1 = parseInt(match1[1])
var int2 = parseInt(match2[1])
if(int1 < 80 && int2 < 80) {
alert("Rendite oben: " + int1 + " %" + "\n" + "Rendite unten: " + int2 + " %");
}
14.03.2016
Daniel S. 3 1

Stelle deine Chrome-Frage jetzt!