maik007
Goto Top

Quellcode auslesen und bestimmte Zahl herausbekommen und dann verabeiten?

Hallo,
ich beschäftige mich nun mit Javascript und möchte ein Javascript im Firefox laufen lasssen.

Ich habe das Problem, dass ich gerne die Zahl aus dem Code 60.65 heraus bekommen möchte. Diese Zahl verändert sich auch immer wieder.
Wie kann ich hier vorgehen?
Schritt 2 ich möchte dann diese Zahl mit einer festen Zahl von mir vergleichen. Also ist Zahl 60.65 >X oder zwischen x und Y dann tue da ansonsten mache das!

<div class="ms_holder tooltip_left" title="Knowledge - <p>Increases when you buy books.</p>">  
				<div class="ms_label">  
					<span class="left"><b>Knowledge</b></span>  
					<span class="right highlighted1" ><b>1.00</b></span>  
					<div class="clear"></div>  
				</div>
				<div class="ms_gradient" style="width:1px;">&nbsp;</div>  
			</div>
			<div class="ms_holder tooltip_left" title="Productivity - <p>Is an average between Energy, Experience, Knowledge. The higher these values, the higher the Productivity.</p>">  
				<div class="ms_label">  
					<span class="left"><b>Productivity</b></span>  
					<span class="right highlighted1" ><b>60.65</b></span>  
					<div class="clear"></div>  
				</div>
				<div class="ms_gradient" style="width:7px;">&nbsp;</div>  
			</div>

Über Hilfe würde ich mich sehr freuen. Wie geht ihr hieran?

Content-Key: 241452

Url: https://administrator.de/contentid/241452

Printed on: April 25, 2024 at 22:04 o'clock

Member: colinardo
colinardo Jun 20, 2014 updated at 17:31:03 (UTC)
Goto Top
Hallo Maik007,
wenn das der komplette Code der Seite ist kannst du z.B. so die Zahl extrahieren und vergleichen:
// wert extrahieren
var wert = document.getElementsByClassName("right highlighted1")[1].firstChild.innerHTML;  

// den string in float wandeln damit wir Ihn vergleichen können
var zahl = parseFloat(wert);

// prüfen der Zahl auf ihren Wert
if (zahl >= 50 && zahl <= 70){
	alert("Zahl liegt zwischen 50 und 70");  
} else if (zahl < 50){
	alert("Zahl liegt unter 50");  
}
Hierbei gibt es ja in deinem Code bereits ein span Element mit den selben Klassen deswegen die Selektierung des zweiten Elements mit [1]. Also musst du je nachdem wieviele dieser Elemente mit den gleichen Klassen auf der Seite existieren den Wert entsprechend anpassen. Die Position kannst du z.B. mit der Eingabe von:
document.getElementsByClassName("right highlighted1")
in die WebKonsole der DeveloperTools in Firefox in Erfahrung bringen (STRG-SHIFT-K).

Grüße Uwe
Member: Maik007
Maik007 Jun 20, 2014 at 12:59:53 (UTC)
Goto Top
Vielen Dank,
ich glaube nicht, dass ich den Code einfach kopieren kann und asführen kann. Bekomme immer eine Fehlemeldung das document nicht dfiniert ist.
Was müsste man da machen? Gibt es ein schnöne Seite wo ich mehr Beispiele und mehr über Javascript finde. Das scheint echt interessant zu sein!
von dieser Classe gibt es 4 und dann müsste der Befehl
var wert = document.getElementsByClassName("right highlighted1")[4].firstChild.innerHTML;
kauten. Was bedeutet hier firstchild.innerHTML?
Member: colinardo
colinardo Jun 20, 2014, updated at Jun 23, 2014 at 18:05:42 (UTC)
Goto Top
Zitat von @Maik007:
Was müsste man da machen? Gibt es ein schnöne Seite wo ich mehr Beispiele und mehr über Javascript finde. Das scheint echt interessant zu sein!
Wenn du nicht sagst wo du das ganze ausführen willst und wo du die Befehle eingibst, schwer dir Hilfestellung zu leisten. Bitte lese erst mal hier alle Seiten durch (vor dem verstehen kommt lesen:):
von dieser Classe gibt es 4 und dann müsste der Befehl
var wert = document.getElementsByClassName("right highlighted1")[4].firstChild.innerHTML;
wenn das Element was du extrahieren willst das vierte ist, nein, dann müsste der Index 3 lauten , das Array ist 0-basiert!
Was bedeutet hier firstchild.innerHTML?
Der HTML-Inhalt nach dem ersten Kindelement nach dem span also alles was innerhalb vom <b> Element steht:
http://www.w3schools.com/js/js_htmldom.asp

Einen kompletten Anfängerkurs können wir hier verständlicherweise nicht liefern.

Hier noch zum Abschluss ein komplett funktionsfähiges Beispiel das die Änderung der Werte simuliert und je nach Wert im Dokument eine Antwort schreibt:
(als *.html abspeichern und im Browser aufrufen)
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>extract number and check value</title>
<script type="text/javascript">  
var el_ergebnis;
var el_wert;
function init(){
	el_ergebnis = document.getElementById("ergebnis");  
	el_wert = document.getElementsByClassName("right highlighted1")[1].firstChild;  
	setInterval(extract,500);
	setInterval(changeValue,1500);
}
function changeValue(){
	var wert = (Math.random() * 100).toFixed(2);
	el_wert.innerHTML = wert;	
}
function extract(){
	// string in float wandeln
	zahl = parseFloat(el_wert.innerHTML);
	// prüfen der zahl
	if (zahl >= 50 && zahl <= 70){
		el_ergebnis.innerHTML = "Zahl liegt zwischen 50 und 70";  
	} else if (zahl < 50){
		el_ergebnis.innerHTML = "Zahl liegt unter 50";  
	} else if (zahl > 70){
		el_ergebnis.innerHTML = "Zahl liegt über 70";  
	}
}
</script>
</head>

<body onLoad="init()">  
<div class="ms_holder tooltip_left" title="Knowledge - <p>Increases when you buy books.</p>">  
  <div class="ms_label"> <span class="left"><b>Knowledge</b></span> <span class="right highlighted1" ><b>1.00</b></span>  
    <div class="clear"></div>  
  </div>
  <div class="ms_gradient" style="width:1px;"> </div>  
</div>
<div class="ms_holder tooltip_left" title="Productivity - <p>Is an average between Energy, Experience, Knowledge. The higher these values, the higher the Productivity.</p>">  
  <div class="ms_label"> <span class="left"><b>Productivity</b></span> <span class="right highlighted1" ><b>60.65</b></span>  
    <div class="clear"></div>  
  </div>
  <div class="ms_gradient" style="width:7px;"> </div>  
</div>
<div id="ergebnis"></div>  
</body>
</html>
Viel Erfolg beim Lernen!

Grüße Uwe