私のソート可能なテーブルでは、一連のステートメントnull
を通じて、sが一番下にソートされ、数値が整数に解析され、文字列が小文字になっています。if/else
特殊文字が上部に並べ替えられた文字列を取得しようとしています。
数値を指定すると、数値ループに入り、解析されます。
値を与えると、ループ
null
に入ります。null
どうすればいいですか?
$('#column1').click(function(e) {
String.prototype.trim = function()
{
return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function()
{
return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function()
{
return this.replace(/\s+$/,"");
}
var specChar = /[a-zA-Z1-9]/;
var $sort = this;
var $table = $('#sort-table');
var $rows = $('tbody > tr',$table);
if($($sort).attr('class')== 'asc'){
$rows.sort(function(a, b){
var keyA = (($('td:eq(0)',a).text()).toLowerCase()).trim();
var keyB = (($('td:eq(0)',b).text()).toLowerCase()).trim();
if(!isNaN(keyA) || !isNaN(keyB) )
{
if(keyA.length <1 || keyB.length < 1)
{
if(keyA.length <1 && keyB.length >1)
{
keyA = "zzzzzzzzzzzzzzz";
}
else if(keyB.length <1 && keyA.length >1)
{
keyB = "zzzzzzzzzzzzzzz";
}
else
{
keyA="zzzzzzzzzzzzzzz";
keyB="zzzzzzzzzzzzzzz";
}
}
else
{
if(!isNaN(keyA) && isNaN(keyB))
{
keyA= parseInt(($('td:eq(0)',a).text()));
}
else if(!isNaN(keyB)&& isNaN(keyA))
{
keyB= parseInt(($('td:eq(0)',b).text()));
}
else
{
keyA= parseInt(($('td:eq(0)',a).text()));
keyB= parseInt(($('td:eq(0)',b).text()));
}
}
}
else if ( specChar.test[keyA] == true || specChar.test[keyB] == true)
{
console.log("this worked " + keyA + " " + keyB)
if(specChar.test[keyA] == true && specChar.test[keyB] == false)
{
keyA = null;
}
else if(specChar.test[keyB] == false && specChar.test[keyA] == false)
{
keyB = null;
}
else
{
keyA = null;
keyB = null;
}
}
else
{
}
$($sort).attr('class', 'desc');
return (keyA < keyB) ? 1 : -1;
});
$.each($rows, function(index, row){
$table.append(row);
$("tr:even").css("background-color", "#FF004D");
$("tr:odd").css("background-color", "#FFDD00");
});
}
else {
$rows.sort(function(a, b){
var keyA = (($('td:eq(0)',a).text()).toLowerCase()).trim();
var keyB = (($('td:eq(0)',b).text()).toLowerCase()).trim();
if(!isNaN(keyA) || !isNaN(keyB) )
{
if(keyA.length <1 || keyB.length < 1)
{
if(keyA.length <1 && keyB.length >1)
{
keyA= "zzzzzzzzzzzzzzz"
}
else if(keyB.length <1 && keyA.length >1)
{
keyB= "zzzzzzzzzzzzzzz"
}
else
{
keyA= "zzzzzzzzzzzzzzz"
keyB= "zzzzzzzzzzzzzzz"
}
}
else
{
if(!isNaN(keyA) && isNaN(keyB))
{
keyA= parseInt(($('td:eq(0)',a).text()));
}
else if(!isNaN(keyB)&& isNaN(keyA))
{
keyB= parseInt(($('td:eq(0)',b).text()));
}
else
{
keyA= parseInt(($('td:eq(0)',a).text()));
keyB= parseInt(($('td:eq(0)',b).text()));
}
}
}
else if ( specChar.test(keyA) == false || specChar.test(keyB) == false)
{
console.log("this worked " + keyA + " " + keyB)
if(specChar.test(keyA) == false)
{
keyA = " ";
}
else if(specChar.test(keyB) == false)
{
keyB = " ";
}
else
{
keyA = " ";
keyB = " ";
}
}
else{}
$($sort).attr('class', 'asc');
return (keyA > keyB) ? 1 : -1;
});
$.each($rows, function(index, row){
$table.append(row);
$("tr:even").css("background-color", "#FF004D");
$("tr:odd").css("background-color", "#FFDD00");
});
}
e.preventDefault();
});