HTML tablosundaki sütunları sıralamak için kullandığım bir kod parçam var ve tarih alanları hariç .... mükemmel çalışıyor. Alfabe ve saf sayısal harika çalışıyor! ancak bir tarih sütununda kullanıldığında, sıralayıcı istediğim gibi çalışmıyor. Şu tarihler şöyle sıralanmış almak:Eklentisiz Javascript sıralama tarihi
01-02-2016
02-01-2016
12-12-2014
12-14-2015
Olmak istediklerim:
12-12-2014
12-14-2015
01-02-2016
İşte
02-01-2016
Ben bu tür yapmak için kullandıkları bir JavaScript olup Şu anda çalışır: :var tb, asc1 = 1,
asc2 = 1,
asc3 = 1,
asc4 = 1,
asc5 = 1,
asc6 = 1;
function sort_table(tbody, col, asc) {
var rows = tbody.rows,
rlen = rows.length,
arr = new Array(),
i, j, cells, clen;
// fill the array with values from the table
for (i = 0; i < rlen; i++) {
cells = rows[i].cells;
clen = cells.length;
arr[i] = new Array();
for (j = 0; j < clen; j++) {
arr[i][j] = cells[j].innerHTML;
}
}
// sort the array by the specified column number (col) and order (asc)
arr.sort(function (a, b) {
return (a[col] == b[col]) ? 0 : ((a[col] > b[col]) ? asc : -1 * asc);
});
// replace existing rows with new rows created from the sorted array
for (i = 0; i < rlen; i++) {
rows[i].innerHTML = "<td>" + arr[i].join("</td><td>") + "</td>";
}
}
onclick işlevi şudur
function test() {
sort_table(tb, 0, asc1); asc1 *= -1; asc2 = 1; asc3 = 1; asc4 = 1; asc5 = 1; asc6 = 1;
};
Bunun nasıl gerçekleşebileceğine dair herhangi bir öneriniz var mı? Javascript için gerçekten yeni ve hala hergün öğreniyorum! Örneğimden söyleyemediyseniz tarih formatı mm-dd-yyyy'dir. Herhangi bir yardım büyük takdir edilecektir!
o ben durdurana kadar bu tam bir örnek çalışma var ama ben kendi kodunda bunun dahil olamaz gibi ben Daniel Almeida kodu benimsedik
GÜNCELLEME. Yaptığım sıralarda düzensiz ve her yerde görünüyor.
var sorter = function(id, column, order, isDate) {
var t = document.getElementById(id);
var rows = Array.prototype.slice.call(t.rows, 0);
rows = rows.sort(function(a, b) {
var dtA = (isDate) ? new Date(a.cells[column].innerHTML) : a.cells[column].innerHTML;
var dtB = (isDate) ? new Date(b.cells[column].innerHTML) : b.cells[column].innerHTML;
return (order == 0) ? dtA > dtB : dtA < dtB;
});
for (i = 0; i < rows.length; i++) {
t.appendChild(rows[i]);
}
}
Ben de bir jsfiddle yarattık ama ben hiç bir şey yapmak için jsfiddle alınamıyor: Şimdi aşağıdaki kodu ile çalışıyorum. Farkında olmadığım bir şeyi kaçırdığımı merak ediyor. İşte jsfiddle.
İki tablonun bölünmesinin nedeni, alt tablonun dinamik olarak yüklenmesidir ve kapsayıcı div, 100 döndürülen kayıt olduğunda uzun bir bilgi listesi yerine kaydırma penceresine izin verir.
Mağaza fiili tarih nesneleri kontrol etmek ve o sıralamak. Görüntülenmeleri gerektiğinde yalnızca tarih nesnelerini dizelere dönüştürün. – forgivenson