Zur Navigation

Tabelle sortieren [7]

61 Jerry02

und wie gehe ich eine ebene tiefer?

26.08.2010 15:37

62 Jerry02

okay ich habs jetzt so gemacht:

Unsortiert[i]['Wert'] = document.getElementById("Tabelle2").childNodes[i].childNodes[Spalte].firstChild.innerHTML;
kann das sein, dass es jetzt funktioniert? also es sortiert auf jeden fall die vorhinn genannten werte richtig! :)

26.08.2010 15:45

63 Jerry02

okay das funktioniert definitiv!
jetzt habe ich nur noch das problem, dass er beim größten wert bei alert z.B. das ausspuckt: Größte Position:[object HTMLTableRowElement]mit3730446Euro

da hab ich noch 2 fragen:

1.
function groessterWert (Spalte)

    {
        var Anzahl = document.getElementById("Tabelle2").childNodes.length;
        Unsortiert = new Array();
        for (i = 0; i < Anzahl; i++) {
            Unsortiert[i] = new Array();
            Unsortiert[i]['Inhalt'] = document.getElementById("Tabelle2").childNodes[i];
            Unsortiert[i]['Wert'] = document.getElementById("Tabelle2").childNodes[i].childNodes[Spalte].firstChild.innerHTML;
        }
        Unsortiert.sort(Sortierung);
        Unsortiert.reverse();
		var groessterName = Unsortiert[0]['Inhalt'];
		var groessterGesamtwert = Unsortiert[0]['Wert'];
        alert ("Größte Position:" + groessterName + "mit" + groessterGesamtwert + "Euro");

dort scheint es ja, dass die inhalt variable falsch ist, bzw falsch benannt ist!
also mit der groessterName variablen will ich dann zugleich auf die 2. spalte zugreifen und sozusagen den namen zu dem größten gesamtwert ausgeben!

2. wie bekomme ich ein Leerzeichen in die alert-Antwort!

26.08.2010 15:55 | geändert: 26.08.2010 15:57

64 Jörg Kruse

zu 1.:
du hast da ein Objekt gespeichert - wenn du dessen Inhalt haben möchtest, benötigst du noch ein innerHTML

zu 2.:
die Leerzeichen einfach in den String packen
" mit "

26.08.2010 16:27

65 Jerry02

ok funktioniert perfekt! jetzt muss ich nur noch den Mittelwert berechen aus den eingetragenen Gesamtwerten! wie kann ich denn jetzt jeden wert der spalte auslesen und dann addieren und dann durch Anzahl teilen? gibt es da vielleicht einen einfachen befehl wie der sort() befehl in arrays oder muss man das per hand machen?

Edit: und nochmal ne ganz blöde frage! wie "befehle" ich dem programm denn jetzt, dass es anstatt alert zu machen, den befehl document.write() ausführen soll und das unter der tabelle?

26.08.2010 16:50 | geändert: 26.08.2010 17:11

66 Jörg Kruse

ok funktioniert perfekt! jetzt muss ich nur noch den Mittelwert berechen aus den eingetragenen Gesamtwerten! wie kann ich denn jetzt jeden wert der spalte auslesen und dann addieren und dann durch Anzahl teilen?

Die Werte addierst du innerhalb der Schleife, danach teilst du sie durch die Anzahl der Schleifendurchläufe

Edit: und nochmal ne ganz blöde frage! wie "befehle" ich dem programm denn jetzt, dass es anstatt alert zu machen, den befehl document.write() ausführen soll und das unter der tabelle?

document.write() ist hier nicht angebracht; du erstellst ein leeres div unterhalb der Tabelle und gibst ihm eine ID; über getElementById() kannst du das div dann auswählen und ihm einen Inhalt geben

26.08.2010 17:57

67 Jerry02

Zitat von Jörg
Die Werte addierst du innerhalb der Schleife, danach teilst du sie durch die Anzahl der Schleifendurchläufe

Wie mache ich das denn genau?hab dazu nicht wirklich was gefunden!


document.write() ist hier nicht angebracht; du erstellst ein leeres div unterhalb der Tabelle und gibst ihm eine ID; über getElementById() kannst du das div dann auswählen und ihm einen Inhalt geben

irgendwie habe ich grad an der stelle nen kleinen hänger:

var gWert = document.getElementById(gWert);

die Zeile ist ja klar

gWert.innerHTML = ???

und das müsste ja auch gut so sein oder? nur was mache ich hinter das gleichheitszeichen?
ich habs damit probiert:
("Größte Position: " + kleinsterName + " mit " + kleinsterGesamtwert + " Euro")
aber so hats definitiv nicht geklappt! oder fehtl dort einfach was?

26.08.2010 21:40

68 Jerry02

So hab grad mal so eine durschnittsberechnung gemacht, wie ich es gedacht hätte:

function durchschnittlicherWert (Spalte)

	{
		var Anzahl = document.getElementById("Tabelle2").childNodes.length;
        Unsortiert = new Array();
        for (i = 0; i < Anzahl; i++) {
            Unsortiert[i] = new Array();
            Unsortiert[i]['Inhalt'] = document.getElementById("Tabelle2").childNodes[i];
            Unsortiert[i]['Wert'] = document.getElementById("Tabelle2").childNodes[i].childNodes[Spalte].firstChild.innerHTML;
        }
		for (i = 0; 1 < Anzahl; i++) {  
        var Werte = Unsortiert[i]['Wert'];
		} 
		var Summe = Werte.join("+");
		var Durchschnitt = Summe/Anzahl;
        alert (Durchschnitt); 
	}

allerdings wird in firebug angezeigt: Unsortiert[i] is undefined
und bezieht sich damit auf die oben markierte Zeile! ich denke mal der index i ist falsch aber was soll ich denn sonst dort eingeben?

26.08.2010 22:59

69 Jerry02

ich poste gleich nochmal die letzte frage die ich habe:
beim sortieren ist mir aufgefallen, dass groß und kleinbuchstaben berücksichtigt werde, also extra sortiert werden und nicht miteinender! so erscheint z.B. das große C am anfang, aber das kleine c wird erst am ende also nach dem großen Z sortiert! gibt es irgendeine möglichkeit das zu unterbinden? wenn ja, wie geht das!
ich wäre dir echt sehr dankbar wenn du mir noch die letzten fragen beantworten könntest! dann bist du mich auch los!

26.08.2010 23:21

70 Jerry02

okay also das mit div habe ich hinbekommen! war ja garnicht so schwer! jetzt stehe ich immernoch vor dem problem mit dem zusammenrechnen der Spaltenwerte also dem durchschnitt berechnen! wie mach ich das genau?

Edit: noch eine frage :) kann ich die werte auch einzeln ausgeben und als variable speichern, weil ich würde gerne noch ein kuchendiagramm erstellen! mir wurde die google api für diagramme empfohlen, aber das problem ist, dass ich ja die zahlen aus dem gesamtwert brauche und die dann noch jede einzeln in prozent umrechnen muss oder?

27.08.2010 09:10 | geändert: 27.08.2010 09:20