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

WordPress中适配本地时区的span时间JS脚本突然失效求助

可能的失效原因及排查方向
  • 脚本未正确加载:
    检查页面源码,确认timezone.js的加载路径是否正确,有没有404错误。可能是子主题文件结构变动(比如js/timezone.js丢失、文件名大小写错误,Linux服务器区分大小写),或者get_stylesheet_directory_uri()返回的路径因主题更新发生变化。

  • 浏览器缓存残留:
    即使关闭了WP Rocket,浏览器本地可能仍缓存旧脚本。尝试强制刷新页面(Ctrl+F5)或清空浏览器缓存后再测试。

  • DOM元素获取逻辑问题:
    你使用的document.getElementsByClassName('time')返回的是动态HTMLCollection,如果循环过程中DOM发生变化(比如元素被修改、移除),会导致集合自动更新,可能出现索引错乱。建议换成静态的document.querySelectorAll('.time'),它返回的NodeList不会随DOM变化而改变,循环更稳定:

    const timeArray = document.querySelectorAll('.time');
    
  • 时区计算逻辑错误:
    代码中硬编码了夏令时调整-60(d.setMinutes(d.getMinutes()-offset-60)),如果当前已过夏令时时段,这个额外的分钟调整会导致时间计算错误。可以注释掉-60测试,或者改用更可靠的时区转换方式:

    // 基于UTC时间构造,再转本地时区
    const utcDateStr = `${new Date().toISOString().split('T')[0]}T${timeArray[i].innerHTML}:00Z`;
    const localDate = new Date(utcDateStr);
    // 从localDate中提取本地小时、分钟等进行后续格式处理
    
  • JS执行中断(控制台错误):
    打开浏览器开发者工具(F12)的Console面板,查看是否有JS报错:

    • 若页面中.time元素的内容格式变化(比如不再是HH:MM),split(':')后数组长度异常,会导致setHours/setMinutes传入非数字值,Date对象失效。
    • 其他主题/插件的JS脚本抛出错误,会阻断你的脚本执行。
    • window.onload被其他脚本覆盖:如果其他脚本也用window.onload = function() {...},会覆盖你的回调,导致代码不执行。建议改用addEventListener:
      window.addEventListener('load', function() {
        // 你的代码逻辑
      });
      
  • 动态生成的DOM元素:
    如果近期主题更新后,.time元素是通过AJAX或其他动态方式加载的,window.onload执行时这些元素还未渲染,自然无法获取到。这种情况需要监听DOM变化(比如使用MutationObserver),或者在元素加载完成后再执行脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:45:25