从数组中获取数据属性

get data attribute from array

我正在尝试修改此排序列表以根据数据属性按最近日期排序。

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));
}

这里是 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>

您似乎使用了错误的 属性 排序,即 textContent 而不是 data-date 属性的值。我在下面修改了您的示例以显示正确的排序功能。

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));
}

这应该产生以下结果 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>