Estoy tratando de modificar esta lista de clasificación para ordenar por la fecha más reciente de un atributo de datos.
function sortList(ul) { var ul = document.getElementById(ul); Array.from(ul.getElementsByTagName("div")) .sort((a, b) => a.textContent.localeCompare(b.textContent)) .forEach(div => ul.appendChild(div)); }y aquí está el html
<div class="grid customer-card-cnt" id="customerlist"> <div class="col col-sm col-4" data-date="2014-05-10"></div> <div class="col col-sm col-4" data-date="2022-05-10"></div> <div class="col col-sm col-4" data-date="2021-05-10"></div> </div>Parece que está ordenando usando la propiedad incorrecta, es decir, textContent en lugar del valor del atributo data-date . He modificado su ejemplo a continuación para mostrar la función de clasificación correcta.
function sortList(ul) { var ul = document.getElementById(ul); Array.from(ul.getElementsByTagName("div")) .sort((a, b) => b.dataset.date.localeCompare(a.dataset.date)) .forEach((div) => ul.appendChild(div)); }Esto debería producir el siguiente html:
<div class="grid customer-card-cnt" id="customerlist"> <div class="col col-sm col-4" data-date="2022-05-10"></div> <div class="col col-sm col-4" data-date="2021-05-10"></div> <div class="col col-sm col-4" data-date="2014-05-10"></div> </div>