GW78: Tabelle sortiert falsch

Beitrag lesen

Hallo!

Ich versuche gerade, für ein Spiel eine Tabelle zu erstellen.

Es geht um diese Seite:

http://www.east-park.de/contest/contest_komplett.html

Die Tabelle lässt sich einfach nicht richtig sortieren. Plötzlich werden Einträge doppelt erzeugt oder die Punkte werden nicht richtig sortiert. Woran liegt das?

Der komplette Quellcode ist sichtbar (Quellcode anzeigen), hier die Script-Teile:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
<head>  
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
  
<style type="text/css">  
#Kopfbereich { position:absolute; top:20px; left:30px; }  
#Tabelle { position:absolute; top:100px; left:30px; }  
body { background-color:#FFFFFF; }  
h1,h2,h3,p,ul,ol,li,td,th { font-family:Arial,sans-serif; color:black; }  
h1 { font-size:24px; margin-top:4px; margin-bottom:4px; margin-left:6px; }  
p,ul,ol,li,td,th { font-size:13px; color:#000000; }  
th,td { padding:1px; }  
</style>  
<script type="text/javascript">  
<!--  
var Tabellendaten = new Array(  
"Lady GaGa","Just Dance","1","Nordkurvensteher","1","171",  
"The Killers","Human","1","Marfinha","2","153",  
  
[...]  
  
"The Who","My Wife","2","schalkefann","86","3",  
"Broilers","Meine Sache","2","Pershing","87","0"  
  
);  
  
var sortierte_Tabellendaten = new Array(Tabellendaten.length);  
  
var Spaltenueberschriften = new Array(  
"Interpret",  
"Titel",  
"Contest",  
"User",  
"Platzierung",  
"Punkte"  
);  
  
var Spalten = Spaltenueberschriften.length;  
var Zeilen = Tabellendaten.length / Spalten;  
  
var Spaltenueberschriftformatierungen = new Array(  
 "width=\"220\" valign=\"top\" style=\"text-align:center; border:solid 1px #DBDBDB\"",  
 "width=\"275\" valign=\"top\" style=\"text-align:center; border:solid 1px #DBDBDB\"",  
 "width=\"65\" valign=\"top\" style=\"text-align:center; border:solid 1px #DBDBDB\"",  
  "width=\"180\" valign=\"top\" style=\"text-align:center; border:solid 1px #DBDBDB\"",  
    "width=\"85\" valign=\"top\" style=\"text-align:center; border:solid 1px #DBDBDB\"",  
 "width=\"70\" valign=\"top\" style=\"text-align:center; border:solid 1px #DBDBDB\""  
);  
  
var Spaltenformatierungen = new Array(  
 "width=\"220\" style=\"font-family:Verdana; text-align:left; border:solid 1px #DBDBDB\"",  
 "width=\"275\" style=\"font-family:Verdana; text-align:left; border:solid 1px #DBDBDB\"",  
 "width=\"65\" style=\"font-family:Verdana; text-align:center; border:solid 1px #DBDBDB\"",  
  "width=\"180\" style=\"font-family:Verdana; text-align:left; border:solid 1px #DBDBDB\"",  
  "width=\"85\" style=\"font-family:Verdana; text-align:center; border:solid 1px #DBDBDB\"",  
   "width=\"70\" style=\"font-family:Verdana; text-align:center; border:solid 1px #DBDBDB\""  
);  
  
var Spaltensortierungen = new Array(  
 "alphabetisch","numerisch","numerisch","numerisch"  
);  
  
var Tabellenformatierung = "border=\"1\" style=\"border:solid 1px #DBDBDB\"  cellspacing=\"0\"";  
var Ordinalzahlenspalte = 1;  
var Ordinalzahlenspaltenformatierung = "width=\"30\" style=\"text-align:center; border:solid 1px #DBDBDB\"";  
  
var IconNormalAuf = "<img src=\"normal_auf.png\" width=\"14\" height=\"12\" border=\"0\" alt=\"\">";  
var IconNormalAb = "<img src=\"normal_ab.png\" width=\"14\" height=\"12\" border=\"0\" alt=\"\">";  
var IconSortiertAuf = "<img src=\"sortiert_auf.png\" width=\"14\" height=\"12\" border=\"0\" alt=\"\">";  
var IconSortiertAb = "<img src=\"sortiert_ab.png\" width=\"14\" height=\"12\" border=\"0\" alt=\"\">";  
  
var Sortierzeile = "";  
  
function Erzeuge_Sortierzeile(Nummer,Richtung) {  
 Sortierzeile = "<tr>";  
 if(Ordinalzahlenspalte)  
   Sortierzeile += "<th " + Ordinalzahlenspaltenformatierung + "> <\/th>";  
 for(var j = 0; j < Spalten; ++j) {  
  Sortierzeile += "<th " + Spaltenformatierungen[j] + ">";  
  if(Richtung == "aufsteigend" && j == Nummer) {  
   Sortierzeile += IconSortiertAuf + " ";  
   Sortierzeile += "<a href=\"javascript:Sortiere_nach_Spalte(" + j + ",'" + Spaltensortierungen[j] + "','absteigend')\">" + IconNormalAb + "</a>";  
  }  
  else if(Richtung == "absteigend" && j == Nummer) {  
   Sortierzeile += "<a href=\"javascript:Sortiere_nach_Spalte(" + j + ",'" + Spaltensortierungen[j] + "','aufsteigend')\">" + IconNormalAuf + "</a>";  
   Sortierzeile += " " + IconSortiertAb;  
  }  
  else {  
   Sortierzeile += "<a href=\"javascript:Sortiere_nach_Spalte(" + j + ",'" + Spaltensortierungen[j] + "','aufsteigend')\">" + IconNormalAuf + "</a> ";  
   Sortierzeile += "<a href=\"javascript:Sortiere_nach_Spalte(" + j + ",'" + Spaltensortierungen[j] + "','absteigend')\">" + IconNormalAb + "</a><\/td>";  
  }  
 Sortierzeile += "<\/th>";  
 }  
 Sortierzeile += "<tr>";  
}  
  
function Sortiere_nach_Spalte(Nummer,Art,Richtung) {  
 var Spaltendaten = new Array();  
 var Vergleichsdaten = new Array();  
 var SortierIndex = new Array();  
 for(var i = 0; i < Zeilen; ++i)  
  Spaltendaten[i] = Vergleichsdaten[i] = Tabellendaten[i * Spalten + Nummer];  
 if(Art == "alphabetisch") Spaltendaten.sort();  
 if(Art == "numerisch") Spaltendaten.sort(Numsort);  
 if(Richtung == "absteigend") Spaltendaten.reverse();  
 for(i = 0; i < Zeilen; ++i)  
  for(var j = 0; j < Zeilen; ++j)  
   if(Spaltendaten[i] == Vergleichsdaten[j])  
    SortierIndex[i] = j;  
 var Speicher;  
 for(i = 0; i < Zeilen; ++i)  
  for(j = 0; j < Spalten; ++j)  
   sortierte_Tabellendaten[i * Spalten + j] = Tabellendaten[SortierIndex[i] * Spalten + j];  
 Erzeuge_Sortierzeile(Nummer,Richtung);  
 Schreibe_Tabelle(sortierte_Tabellendaten);  
}  
  
function Schreibe_Tabelle(Array) {  
 var Tabelleninhalt = "";  
 Tabelleninhalt += "<table " + Tabellenformatierung + ">";  
 Tabelleninhalt += "<thead><tr>";  
 if(Ordinalzahlenspalte)  
   Tabelleninhalt += "<th " + Ordinalzahlenspaltenformatierung + "> <\/th>";  
 for(var j = 0; j < Spalten; ++j)  
  Tabelleninhalt += "<th " + Spaltenueberschriftformatierungen[j] + ">" + Spaltenueberschriften[j] + "<\/th>";  
 Tabelleninhalt += "<\/tr>";  
 Tabelleninhalt += Sortierzeile;  
 Tabelleninhalt += "<\/thead>";  
 Tabelleninhalt += "<tfoot><\/tfoot>";  
 Tabelleninhalt += "<tbody>";  
 for(var i = 0; i < Zeilen; ++i) {  
  Tabelleninhalt += "<tr>";  
  if(Ordinalzahlenspalte)  
   Tabelleninhalt += "<td " + Ordinalzahlenspaltenformatierung + ">" + (i+1) + ".<\/td>";  
  for(var j = 0; j < Spalten; ++j)  
   Tabelleninhalt += "<td " + Spaltenformatierungen[j] + ">" + Array[i * Spalten + j] + "<\/td>";  
  Tabelleninhalt += "<\/tr>";  
 }  
 Tabelleninhalt += "<\/tbody>";  
 Tabelleninhalt += "<\/table>";  
 if(document.getElementById)  
  document.getElementById("Tabelle").innerHTML = Tabelleninhalt;  
 else if(document.all)  
  document.all.Tabelle.innerHTML = Tabelleninhalt;  
 else if(document.layers) {  
  document.Tabelle.document.open();  
  document.Tabelle.document.write(Tabelleninhalt);  
  document.Tabelle.document.close();  
 }  
}  
  
function Numsort(a,b)  
{ return a-b; }  
</script>  
<title>Tabelle</title>  
</head>  
<body onLoad="Erzeuge_Sortierzeile(-1,''); Schreibe_Tabelle(Tabellendaten);">  
<div id="Kopfbereich">  
<h3>Tabelle</h3>  
  
<noscript>  
<p>Die Daten auf dieser Seite lassen sich nur mit JavaScript-fähigen Browsern und mit eingeschaltetem JavaScript anzeigen!</p>  
</noscript>  
</div>  
<div id="Tabelle"></div>  
</body>  
  
</html>