为了账号安全,请及时绑定邮箱和手机立即绑定

在当前活动元素中开始倒计时

在当前活动元素中开始倒计时

人到中年有点甜 2022-06-09 18:25:27
我有引导多步骤表格。每一步都有 <span class="timer"></span>。我的问题是计时器仅在第一步有效。我不知道如何在另一个步骤(字段集标记)上开始倒计时。定时器代码:  var counter = seconds;  var interval = setInterval(() => {   document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;    counter--;    if(counter < 0 ){      clearInterval(interval);    };  }, 1000);};我也试过这个:        $("#nextStep").click(function() {            startCountdown(60);        });
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

document.getElementById('timer')总是返回在 DOM 中找到的第一个项目!您应该使用不同的 id ( #timer-1,#timer-2等) 并在您完成每个步骤时有条件地选择它们。


您可以startCountdown像这样扩充您的方法:


function startCountDown (selectorId, seconds) {

  var counter = seconds;


  var interval = setInterval(() => {

   document.getElementById(selectorId).innerHTML = "("+counter + " seconds left)" ;


    counter--;

    if(counter < 0 ){

      clearInterval(interval);

    };

  }, 1000);

};


let idCounter = 0


$("#nextStep").click(function() {

   // generate new counter id based on your progression

   // this assumes your ids are timer-0, timer-1, etc

   startCountdown(60, 'timer-' + idCounter);

   idCounter++

});

更好的方法是使用类,getElementsByClassName()然后简单地遍历数组:


function startCountDown (selectorId, timerCounter, seconds) {

  var counter = seconds;


  var interval = setInterval(() => {

   // getElementsByClassName returns a DOMNodeList of matched items that you can use indexes to access

   document.getElementByClassName(selectorId)[timerCounter].innerHTML = "("+counter + " seconds left)" ;


    counter--;

    if(counter < 0 ){

      clearInterval(interval);

    };

  }, 1000);

};


let timerCounter = 0


$("#nextStep").click(function() {

   startCountdown(60, 'timer', timerCounter);

   timerCounter++

});


查看完整回答
反对 回复 2022-06-09
?
慕沐林林

TA贡献2016条经验 获得超9个赞

您需要更改 <span class="timer"></span>为 <span id="timer"></span>. 最后 };in 给我一个错误,所以我用


var counter = seconds;


  var interval = setInterval(() => {

   document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;


    counter--;

    if(counter < 0 ){

      clearInterval(interval);

    };

  }, 1000);

代替


var counter = seconds;


  var interval = setInterval(() => {

   document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;


    counter--;

    if(counter < 0 ){

      clearInterval(interval);

    };

  }, 1000);

};

你可以做


var counter = seconds;

function startInterval() {

   var interval = setInterval(() => {

   document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;


   counter--;

   if(counter < 0 ){

     clearInterval(interval);

   };

  }, 1000);

}

并用于 startInterval()启动计时器。如果你需要在计时器秒数结束时做某事,你可以做


var counter = seconds;

function startInterval() {

   var interval = setInterval(() => {

   document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;


   counter--;

   if(counter < 0 ){

     clearInterval(interval);

     var timerOver = true;

   };

  }, 1000);

};


查看完整回答
反对 回复 2022-06-09
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号