日期格式不起作用或无法在网站上加载

Date format not working or loading on website

我有这段代码过去一直有效,但在过去的一个月里它突然停止工作,原因不明。我曾尝试将编码放在特定区域,例如 <head>bodymain content,我认为这些区域可以改进或使其发挥作用,但 none 做到了。任何人都可以检查此编码并查看是否缺少某些内容,或者是否可以使其再次运行?

如果您可以在此处查看网站 https://www.gretaliaprince.com/blog/category/style-2020 然后向下滚动到单个博客 post 日期格式为 3/7/2020.日期的格式应该是 2020 年 3 月 7 日。谢谢

// Blog date
window.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('.date-text').forEach(el => el.textContent = formatDateString(el.textContent))
}, false);
function formatDateString(s) {
  var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  var nth = function (d) {
      if (d > 3 && d < 21) return 'th'; switch (d % 10) {
        case 1: return "st";
        case 2: return "nd";
        case 3: return "rd";
        default: return "th";
      }
    }
  var arr = s.split('/');
  return arr[1] + nth(arr[1]) + " " + months[arr[0] - 1] + " " + arr[2];
  }

这应该是一条评论,但我还不能发表评论。您要获取哪种格式? 2020 年 3 月 7 日 还是 3/7/2020?我试过你的代码,它以以前的格式返回了日期。

我已经简要浏览了您在问题中分享 link 的网站。您在上面发布的 formatDateString 函数没有问题。但是,在页面到达 formatDateString 函数之前出现了很多 javascript 错误。因此,您发布的代码将不会被执行。

发生的第一个错误是因为在此点击事件侦听器中,作为事件数据传入“e”的变量似乎并未在同一范围内的任何地方声明。

$('li.months').click(e,function() {

为了清楚起见,变量作为事件数据作为函数之前的参数传递给事件侦听器,用于将数据从事件处理程序外部传递到回调中使用。这与事件侦听器本身传递给回调函数的“事件对象”变量不同,后者保存有关已触发事件的信息。会这样写

$('li.months').click(function(e){

此错误可能是导致 jQuery 引发异常的所有后续错误的主要原因。


更新:

不确定我是否遗漏了它,但我再次查看并梳理了所有 JS 文件,但无法在浏览器中加载的文件中找到此代码或试图操纵的代码的任何位置日期文本存在。 因为你想要 运行 的函数没有 JS 依赖项,你可以将它添加到页面上最后加载的脚本标记中。我已经快速测试将它添加到加载您的 Twitter 小部件的自调用函数,如下例所示。

此函数 运行 是最后一项,因此无需检查 DOMContentLoaded

(function() {
    function j(src, id) {
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.async = true;
            s.src = src;
            if(id) {s.id=id};
            document.getElementsByTagName('head')[0].appendChild(s);
    }
    j('//platform.twi'+'tter.com/widgets.js');
    
// INSERT CODE STARTING HERE
    function formatDateString(s) {
      var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
      var nth = function (d) {
          if (d > 3 && d < 21) return 'th'; switch (d % 10) {
            case 1: return "st";
            case 2: return "nd";
            case 3: return "rd";
            default: return "th";
          }
        }
      var arr = s.split('/');
      return arr[1] + nth(arr[1]) + " " + months[arr[0] - 1] + " " + arr[2];
     }

     document.querySelectorAll('.date-text').forEach(el => el.textContent = formatDateString(el.textContent));
// END OF CODE TO INSERT

})()

希望对您有所帮助。