Táblázat adatainak ABC sorrendje
Mi lenne a megfelelő megoldás táblázat adott oszlopának betűrend szerinti felsorolásához?
■ H | K | Sze | Cs | P | Szo | V |
---|---|---|---|---|---|---|
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
Script
{
var isDate = new Date(cValue);
if (isDate == "NaN")
{
if (isNaN(cValue))
{
cValue = cValue.toUpperCase();
return cValue;
}
else
{
var myNum;
myNum = String.fromCharCode(48 + cValue.length) + cValue;
return myNum;
}
}
else
{
var myDate = new String();
myDate = isDate.getFullYear() + " " ;
myDate = myDate + isDate.getMonth() + " ";
myDate = myDate + isDate.getDate(); + " ";
myDate = myDate + isDate.getHours(); + " ";
myDate = myDate + isDate.getMinutes(); + " ";
myDate = myDate + isDate.getSeconds();
return myDate ;
}
}
function sortTable(col, tableToSort)
{
var iCurCell = col + tableToSort.cols;
var totalRows = tableToSort.rows.length;
var bSort = 0;
var colArray = new Array();
var oldIndex = new Array();
var indexArray = new Array();
var bArray = new Array();
var newRow;
var newCell;
var i;
var c;
var j;
for (i=1; i < tableToSort.rows.length; i++)
{
colArray[i - 1] = setDataType(tableToSort.cells(iCurCell).innerText);
iCurCell = iCurCell + tableToSort.cols;
}
for (i=0; i < colArray.length; i++)
{
bArray[i] = colArray[i];
}
colArray.sort();
for (i=0; i < colArray.length; i++)
{
indexArray[i] = (i+1);
for(j=0; j < bArray.length; j++)
{
if (colArray[i] == bArray[j])
{
for (c=0; c<i; c++)
{
if ( oldIndex[c] == (j+1) )
{
bSort = 1;
}
}
if (bSort == 0)
{
oldIndex[i] = (j+1);
}
bSort = 0;
}
}
}
for (i=0; i<oldIndex.length; i++)
{
newRow = tableToSort.insertRow();
for (c=0; c<tableToSort.cols; c++)
{
newCell = newRow.insertCell();
newCell.innerHTML = tableToSort.rows(oldIndex[i]).cells(c).innerHTML;
}
}
for (i=1; i<totalRows; i++)
{
tableToSort.moveRow((tableToSort.rows.length -1),1);
}
for (i=1; i<totalRows; i++)
{
tableToSort.deleteRow();
}
}
sortable
http://www.kryogenix.org/code/browser/sorttable/
Kiírás
<TR>
<TD><A href="javascript:sortTable(0, rsTable);">1. szempont</A></TD>
<TD><A href="javascript:sortTable(1, rsTable);">2. szempont</A></TD>
</TR></FONT>
<tr>
<TD>adat1</TD>
<TD>adat2</TD>
</tr>
...stb
</table>
Hol a hiba?
jquery plugin
nagyszerű!
Magyar ABC?
Ezzel annyi gond lehet, hogy ha tartalmaz az oszlop mondjuk ékezetes betűket, akkor elromlik a rendezés :-(
Emlékem szerint a karakterkódok valahogy úgy jönnek sorban, hogy először vannak az angol ABC betűi, utána minden más.
Tehát az A,Á,B betűk "rendezése" A,B,Á lesz.
Esetleg annyit meg lehet csinálni, hogy csinálsz egy string-et a betűkből, amik szerepelhetnek az adott oszlopban (magyar ABC-ben rendezve, tehát var a ="aábc..."), majd ebből a string-ből szeded ki, hogy hányadik helyen szerepel a keresett betű, és ezeket a számokat hasonlítod össze.
(ha jól láttam, talán Zazu kódjának a 14. sorát
Ha tévedtem, kövezzetek meg nyugodtan :-)