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

单页多次展示JS倒计时,使用getElementsByClassName不显示如何解决

问题原因

document.getElementsByClassName() 方法返回的是 HTMLCollection 类数组对象,并非单个DOM元素,该对象本身没有innerHTML属性,因此直接赋值不会生效,页面也就没有内容显示。

解决方案

你只需要先获取所有class为demo的元素,再遍历集合中的每一个元素,分别为其设置内容即可,修改后的代码如下:

HTML代码

<!-- 可重复添加多个同class的标签,所有标签都会同步展示倒计时 -->
<p class="demo"></p>
<p class="demo"></p>
<p class="demo"></p>

JS代码

// 设置倒计时的目标时间
var countDownDate = new Date("Jan 5, 2022 15:37:25").getTime();

// 每1秒更新一次倒计时
var x = setInterval(function() {

  // 获取当前时间戳
  var now = new Date().getTime();
    
  // 计算当前时间和目标时间的差值
  var distance = countDownDate - now;
    
  // 时间差换算为天、时、分、秒
  var days = Math.floor(distance / (1000 * 60 * 60 * 24));
  var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    
  // 生成要展示的倒计时文本
  var showText = days + "d " + hours + "h " + minutes + "m " + seconds + "s ";
  // 获取所有class为demo的元素,遍历逐个赋值
  var demoElements = document.getElementsByClassName("demo");
  for(var i = 0; i < demoElements.length; i++) {
    demoElements[i].innerHTML = showText;
  }
    
  // 倒计时结束后的处理逻辑
  if (distance < 0) {
    clearInterval(x);
    var expiredText = "已过期";
    for(var i = 0; i < demoElements.length; i++) {
      demoElements[i].innerHTML = expiredText;
    }
  }
}, 1000);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:06:04