Hallo zusammen
Ich habe hier: http://www.j-berkemeier.de/TableSort.html ein Skript gefunden, über welches man sehr einfach eine dynamische Sortierung von HTML-Tabellen integrieren kann.
Das Skript verwendet als Sortier-Zeichen vorhandene Zeichen (z.B. String.fromCharCode(8593);). Ich möchte nun aber stattdessen eigene Grafiken einbinden.
Mein Problem ist, dass die eingefügten Image-Tags vom Browser nicht als Tag erkannt werden, weil aus dem <-Zeichen z.B. ein < wird. Ich bekomme als Ausgabe im Quelltext dann z.B. <img src="images/sort_auf_aktiv.gif" width="7" height="7" border="0" alt="" /> statt <img src="images/sort_auf_aktiv.gif" width="7" height="7" border="0" alt="" />
Wenn ich die Grafik z.B. mit innerHTML einbinde, klappt es...? Ich hab's auch schon mit einfachen und doppelten Backslashs versucht, aber das bringt auch nichts.
Hat jemand eine Idee, was ich ändern muss, damit die Klammern nicht umgewandelt werden?
Vielen Dank für die Mühe!
Bambi
Hier kommt der Code (von mir bereits angepasst, Original siehe Link oben)
// TableSort 8.4
// Jürgen Berkemeier, 19. 2. 2008
// www.j-berkemeier.de
( function() {
var JB_Table=function(tab) {
// var up = String.fromCharCode(160,9650);
// var down = String.fromCharCode(160,9660);
// var up = String.fromCharCode(160,8593);
// var down = String.fromCharCode(160,8595);
// var no = String.fromCharCode(160,160,160,160);
var IconAuf_inaktiv = "<img src=\"images/sort_auf_inaktiv.gif\" width=\"7\" height=\"7\" border=\"0\" alt=\"\">";
var IconAuf_aktiv = "<img src=\"images/sort_auf_aktiv.gif\" width=\"7\" height=\"7\" border=\"0\" alt=\"\" />";
var IconAb_inaktiv = "<img src=\"images/sort_ab_inaktiv.gif\" width=\"7\" height=\"7\" border=\"0\" alt=\"\">";
var IconAb_aktiv = "<img src=\"images/sort_ab_aktiv.gif\" width=\"7\" height=\"7\" border=\"0\" alt=\"\">";
var dieses=this;
var Init_Sort=function(nr) {
t.style.cursor="pointer";
t.onclick = function() { dieses.sort(nr); }
t.appendChild(document.createTextNode(IconAuf_inaktiv + IconAb_inaktiv));
if(t.className.indexOf("vorsortiert-")>-1) {
t.lastChild.data=IconAuf_inaktiv + IconAb_aktiv;
ssort=nr;
}
else if(t.className.indexOf("vorsortiert")>-1) {
t.lastChild.data=IconAuf_aktiv + IconAb_inaktiv;
ssort=nr;
}
} // Init_Sort
var VglFkt=function(a,b) {
var as=a[ssort], bs=b[ssort];
var ret=(as>bs)?1:(as<bs)?-1:0;
if(!ret && ssort) {
as=a[0]; bs=b[0];
ret=(as>bs)?1:(as<bs)?-1:0;
}
return ret;
}
var convert=function(val) {
var dmy;
var trmdat = function() {
if(dmy[0]<9) dmy[0] = "0"+dmy[0];
if(dmy[1]<9) dmy[1] = "0"+dmy[1];
if(dmy[2]<9) dmy[2] = "200"+dmy[2];
else if(dmy[2]<20) dmy[2] = "20"+dmy[2];
else if(dmy[2]<99) dmy[2] = "19"+dmy[2];
else if(dmy[2]>9999) dmy[2] = "9999";
}
if(!isNaN(val)) return parseFloat(val);
var n = val.replace(",",".")
if(!isNaN(n)) return parseFloat(n);
n = n.replace(/\s| | |\u00A0/g,"");
if(!isNaN(n)) return n;
if(!val.search(/^\s*\d+\s*\.\s*\d+\s*\.\s*\d+\s+\d+:\d\d\s*$/)) {
var dp = val.search(":");
dmy = val.substring(0,dp-2).split(".");;
dmy[3] = val.substring(dp-2,dp);
dmy[4] = val.substring(dp+1,dp+3);
for(var i=0;i<5;i++) dmy[i] = parseInt(dmy[i],10);
trmdat();
if(dmy[3]<10) dmy[3] = "0"+dmy[3];
if(dmy[4]<10) dmy[4] = "0"+dmy[4];
return parseFloat((""+dmy[2]+dmy[1]+dmy[0]+"."+dmy[3]+dmy[4]).replace(/ /g,""));
}
if(!val.search(/^\s*\d+\s*\.\s*\d+\s*\.\s*\d+/)) {
dmy = val.split(".");
for(var i=0;i<3;i++) dmy[i] = parseInt(dmy[i],10);
trmdat();
return parseFloat((""+dmy[2]+dmy[1]+dmy[0]).replace(/ /g,""));
}
if(!val.search(/^\s*\d+:\d\d\s*$/)) {
dmy = val.split(":");
for(var i=0;i<2;i++) dmy[i] = parseInt(dmy[i],10);
if(dmy[0]<10) dmy[0] = "0"+dmy[0];
if(dmy[1]<10) dmy[1] = "0"+dmy[1];
return parseFloat((""+dmy[0]+dmy[1]).replace(/ /g,""));
}
return val.toLowerCase().replace(/\u00e4/g,"ae").replace(/\u00f6/g,"oe").replace(/\u00fc/g,"ue").replace(/\u00df/g,"ss");
} // convert
this.sort=function(sp) {
if (first) {
for(var z=0;z<nzeilen;z++) {
var zelle=tz[z].cells;
Arr[z]=new Array(nspalten+1);
Arr[z][nspalten]=tz[z];
for(var s=0;s<nspalten;s++) {
var zi=convert(JB_elementText(zelle[s]));
Arr[z][s]=zi ;
}
}
first=0;
}
if(sp==ssort) {
Arr.reverse() ;
if ( Titel[ssort].lastChild.data==IconAuf_inaktiv + IconAb_inaktiv )
Titel[ssort].lastChild.data=IconAuf_aktiv + IconAb_inaktiv;
else if ( Titel[ssort].lastChild.data==IconAuf_aktiv + IconAb_inaktiv )
Titel[ssort].lastChild.data=IconAuf_inaktiv + IconAb_aktiv;
else if ( Titel[ssort].lastChild.data==IconAuf_inaktiv + IconAb_aktiv )
Titel[ssort].lastChild.data=IconAuf_aktiv + IconAb_inaktiv;
}
else {
if ( ssort>=0 && ssort<nspalten ) Titel[ssort].lastChild.data=IconAuf_inaktiv + IconAb_inaktiv;
ssort=sp;
Arr.sort(VglFkt);
Titel[ssort].lastChild.data=IconAuf_aktiv + IconAb_inaktiv;
}
for(var z=0;z<nzeilen;z++)
tbdy.appendChild(Arr[z][nspalten]);
} // sort
var first=1;
var ssort;
var tbdy=tab.getElementsByTagName("tbody")[0];
var tz=tbdy.rows;
var nzeilen=tz.length;
var nspalten=tz[0].cells.length;
var Titel=tab.getElementsByTagName("thead")[0].getElementsByTagName("tr")[0].getElementsByTagName("th");
var Arr=new Array(nzeilen);
var ct=0;
for(var i=0;i<Titel.length;i++) {
var t=Titel[i];
if(t.className.indexOf("sortierbar")>-1 || t.className.indexOf("vorsortiert")>-1) {
ct++;
Init_Sort(i);
}
}
if(ct==0) {
for(var i=0;i<Titel.length;i++) {
var t=Titel[i];
Init_Sort(i);
}
}
} // JB_Table
var JB_addEvent=function(oTarget, sType, fpDest) {
var oOldEvent = oTarget[sType];
if (typeof oOldEvent != "function") {
oTarget[sType] = fpDest;
} else {
oTarget[sType] = function(e) {
oOldEvent(e);
fpDest(e);
}
}
}
var JB_getElementsByClass_TagName=function(tagname,classname) {
var tag=document.getElementsByTagName(tagname);
var Elements=new Array();
for(var i=0;i<tag.length;i++) {
if(tag[i].className.indexOf(classname)>-1) Elements[Elements.length]=tag[i];
}
return Elements;
}
var JB_elementText = function(elem) {
var eT = function(ele) {
var uele=ele.firstChild;
while(uele) {
if(uele.hasChildNodes()) eT(uele);
if(uele.nodeType == 1) Text += " ";
else if(uele.nodeType == 3) Text += uele.data;
uele = uele.nextSibling;
}
}
var Text="";
eT(elem);
return Text.replace(/\s+/g," ");
}
JB_addEvent(window,"onload",function(e) {
if (!document.getElementsByTagName) return;
if (!document.getElementsByTagName('body')[0].appendChild) return;
var Sort_Table=JB_getElementsByClass_TagName("table","sortierbar");
for(var i=0;i<Sort_Table.length;i++) new JB_Table(Sort_Table[i]);
});
})();