You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对含日期的<a>标签列表按日期从旧到新排序

实现方法

直接用原生JavaScript即可完成排序,无需引入第三方库,核心逻辑分三步:

  • 定位节目列表的父容器,筛选出所有class为episodecell的节目条目
  • 从每个条目内class为caption2的元素文本中,提取分隔符•前的日期字符串,转为可比较的时间戳
  • 按时间戳从小到大对条目排序(对应日期从早到晚),将排序后的节点重新插回父容器即可覆盖原有顺序

完整可运行代码如下:

// 获取节目列表父容器
const episodeListWrap = document.querySelector('.pure-u-1.pure-u-sm-3-5');
// 将所有节目a标签转为数组,方便调用排序方法
const episodeList = Array.from(episodeListWrap.querySelectorAll('a.episodecell'));

episodeList.sort((prev, next) => {
  // 提取caption2中•符号前的日期文本
  const extractDate = (el) => el.querySelector('.caption2').textContent.trim().split('•')[0].trim();
  // 转为时间戳做大小比较
  const prevTime = new Date(extractDate(prev)).getTime();
  const nextTime = new Date(extractDate(next)).getTime();
  // 升序排列即日期早的在前
  return prevTime - nextTime;
});

// 把排序后的节点重新插入父容器,页面会自动按新顺序渲染
episodeList.forEach(item => episodeListWrap.appendChild(item));

补充说明:你提供的示例里日期格式为「月缩写+日」(如Jun 26),JS原生Date对象可直接解析识别,同一年的节目可以直接用上述代码正常排序。如果你的列表包含跨年度的节目,需要在解析日期时补充对应年份信息再转时间戳,否则会出现跨年内容排序错乱的问题。

针对你给出的示例HTML,执行上述代码后排好序的条目顺序为:

  • Jun 26:Priest and Joe Illidge on crafting new villain Entropy without any rules
  • Jun 27:Ep. 647: Best Sci Fi Beach Reading
  • Jun 29:Filosofía de coyote
  • Jun 30:489: Very Inappropriate Thoughts About This Computer
    完全符合「日期最早的条目排在列表顶部、日期最新的条目排在列表末尾」的要求。

内容的提问来源于stack exchange,提问作者cazepeda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:09:20