jule82: Spalte Datum in einer Tabelle sortieren

Hi Leute,

ich hab da mal ein Problemchen :)

Und zwar hab ich eine Tabelle, dessen Spalten man wunderbar sortieren kann.
Nur sortiert er die Spalte Datum wie einen String. Also ohne die Syntax TT.MM.JJJJ zu berücksichtigen.

Jetzt wollte ich wissen, wo ich welche Funktion benutzen muss??

Wäre froh wenn mir jemand da weiter helfen könnte.

Danke im voraus :)

/******************************************************************************/
/**** Sortieren von Tabellen-Zellen ****************/

var sorted = "";

function sortTable(TableObj, ColNr, dec){

while(TableObj.tagName != "TBODY" && TableObj.tagName != "TABLE"){  
	TableObj = TableObj.parentNode;  
}  
  
// �berpr�fen ob schon Sortiert wurde.  
if(sorted == ColNr + "" + dec + "" + (TableObj.innerText != undefined ? TableObj.innerText : TableObj.textContent)) {  
	return true;  
}  
  
if(document.getElementById("SortiertesTBODY")) {  
	TableObj.removeChild(document.getElementById("SortiertesTBODY"));  
}  
  
var TableArray = new Array();  
var TRs = TableObj.getElementsByTagName("tr");  
var TD;  

// Den Sortierschl�ssel in ein Array schreiben  
for (var i = 0; i < TRs.length; i++){  
	if(TRs[i].getElementsByTagName("td") && TRs[i].className != "TagNoSortAble"){  
		TD = TRs[i].getElementsByTagName("td")[ColNr-1];  
		  
		var tmpString = TD.innerText != undefined ? TD.innerText.toLowerCase() : TD.textContent.toLowerCase();  
		  
		if(tmpString.slice(0,1) == "�"){  
			tmpString = "a" + tmpString.slice(1);  
		} else if(tmpString.slice(0,1) == "�"){  
			tmpString = "u" + tmpString.slice(1);  
		} else if(tmpString.slice(0,1) == "�"){  
			tmpString = "o" + tmpString.slice(1);  
		}  
		  
		  
		TableArray[TableArray.length] = tmpString + "@@@" + i;  
	}  
	  
}  
  
// Array Sortieren  
TableArray.sort();  
  
// Wenn gew�nscht, dann andersherum sortieren  
if(!dec){  
	TableArray.reverse();	  
}  



if(HTMLName == "I\_Glossar.htm") {  

	GlossarSorting(TableObj, TRs, TableArray);  
	doTabColored();  
  
} else {  
	  
		  
	if(TableObj.tagName != "TBODY")  
		TableObj = TableObj.getElementsByTagName("tbody")[0];  
	  
	// Hinzuf�gen der Sortierten Zeilen  
	for (i = 0; i < TableArray.length; i++){  
		var t = parseInt(TableArray[i].split("@@@")[1]);  
		var CloneNode = TRs[t].cloneNode(true);  
		TableObj.insertBefore(CloneNode, TRs[TRs.length-1].nextSibling);  
	}  

	// L�schen der Inhalte der Sortierten Zeilen  
	for (i = 0; i < TableArray.length; i++){  
		var t = parseInt(TableArray[i].split("@@@")[1]);  
		var tNode = document.createElement("tr");  
		tNode.className = "deleteNow";  
		TableObj.replaceChild(tNode, TRs[t]);  
		  
	}  
  
	TRs = TableObj.getElementsByTagName("tr");  
	  
	// L�schen der Zeilen  
	for (i = TRs.length - 1; i > 0; i--){  
		if(TRs[i].className == "deleteNow"){  
			TableObj.removeChild(TRs[i]);	  
		}  
	}  
	  
	var trueI = 2;  
	// Spalten wieder markieren.  
	for (var i=1; i < TRs.length ; i++){  
		if(TRs[i].style.display == "" || HTMLName != "Vorlagen.htm"){  
			if(trueI%2 == 1){  
				TRs[i].style.backgroundColor = "#E5EAF1";  
				trueI = 0;  
			} else {  
				TRs[i].style.background = "#FFFFFF";  
				trueI = 1;  
			}  
		}  
	}  
}  
  
sorted = ColNr + "" + dec + "" + (TableObj.innerText != undefined ? TableObj.innerText : TableObj.textContent) ;  

}

  1. hi,

    Nur sortiert er die Spalte Datum wie einen String. Also ohne die Syntax TT.MM.JJJJ zu berücksichtigen.

    Jetzt wollte ich wissen, wo ich welche Funktion benutzen muss??

    Du brauchst einen Bezugstag, den Tag 0, z.b. auf den 1.1.1970 gelegt. Jedes Datum ist dann ein numerischer Wert bezogen auf Tag 0, nach dem Du numerisch sortieren kannst. Falls Du also das Datum in der Form TT.MM.JJJJ in der Tabelle hast, muss das die Sortierfunktion auf einen numerischen Tag umrechnen und im gewünschten Format wieder zurückgeben.

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. Hi Hotte,

      danke für die schnelle Antwort :)

      wie hätte dass dann auszusehen. Ich bin eine absolute Javascript-Anfängerin :(

      1. hi,

        wie hätte dass dann auszusehen. Ich bin eine absolute Javascript-Anfängerin :(

        In diesem Fall bin ich das auch, aber ich würde das so machen und ich denke, dass dazu genügend Informationen in SELFHTML zu finden sind.

        Hotte

        --
        Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
  2. Hallo jule82,

    Nur sortiert er die Spalte Datum wie einen String. Also ohne die Syntax TT.MM.JJJJ zu berücksichtigen.

    in meinem Tabellensortierer zerlege ich das Datum (dd.mm.yyyy) in eine Zahl (yyyymmdd) und sortiere dann nach dieser.

    Gruß, Jürgen

  3. Hi,

    Nur sortiert er die Spalte Datum wie einen String.

    Natürlich - es *ist* ein String.

    Also ohne die Syntax TT.MM.JJJJ zu berücksichtigen.

    Es existiert keinerlei "Syntax".

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.