while循环内的Javascript querySelector问题

问题描述 投票:1回答:1

我正在尝试将倒计时脚本附加到循环的动态div。倒数显示在循环外,没有问题,但是控制台日志显示queryselector在循环内为空。如果有人可以提供帮助,将不胜感激

var expiration = data[i]['expiration'];

function getTimeRemaining(expiration) {
  var t = Date.parse(expiration) - Date.parse(new Date());
  var seconds = Math.floor((t / 1000) % 60);
  var minutes = Math.floor((t / 1000 / 60) % 60);
  var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
  var days = Math.floor(t / (1000 * 60 * 60 * 24));
  return {
    'total': t,
    'days': days,
    'hours': hours,
    'minutes': minutes,
    'seconds': seconds
  };
}

function initializeClock(id, expiration) {
  var clock = document.getElementById(id);
  var daysSpan = clock.querySelectorAll('.days');
  var hoursSpan = clock.querySelectorAll('.hours');
  var minutesSpan = clock.querySelectorAll('.minutes');
  var secondsSpan = clock.querySelectorAll('.seconds');

  function updateClock() {
    var t = getTimeRemaining(expiration);

    daysSpan.innerHTML = t.days;
    hoursSpan.innerHTML = t.hours;
    secondsSpan.innerHTML = ('0' + t.minutes).slice(-2);
    secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);

    if (t.total <= 0) {
      clearInterval(timeinterval);
    }
  }

  updateClock();
  var timeinterval = setInterval(updateClock, 1000);
}

initializeClock('clockdiv', expiration);


if (email == "") {

  if (promoType == "Banner") {
    $('#load-container-expiring').append('<div class="row-center-center padding-top-5 padding-bottom-2"><div>' + promoNameExpiringButton + '</div></div>');
    $('#load-container-expiring').append('<div><div class="wrap-content"><img class="mobile-banner-scale" id="visitor-banner-click" src=' + theBanner + '></div></div>');
    -- >>> Issue Here-- - > $('#load-container-expiring').append('<div id="clockdiv"><span class="days"></span> Days <span class="hours"></span> Hours <span class="minutes"></span> Minutes <span class="seconds"></span> Seconds</div>');
  }
javascript countdown
1个回答
0
投票

在您呼叫initializeClock('clockdiv', expiration)时,标识为“ clockdiv”的div还不存在。因此clock将是不确定的,并且clock.querySelectorAll(...)将生成异常。

将那个[clockdiv]元素添加到DOM的代码下面移动initializeClock('clockdiv', expiration)

也将第一个secondsSpan.innerHTML =固定为minutesSpan.innerHTML =

© www.soinside.com 2019 - 2024. All rights reserved.