一页中有多个倒计时时间

时间:2017-04-14 09:58:52

标签: javascript jquery countdowntimer jalali-calendar

首先,我使用jalali / persian日期和倒计时jQuery插件对我不起作用。对于ex插件,必须输入格里高利日期,如2017/5/2,但波斯语/ jalali日期为1396/2/17。

我有多个日期时间,指定日,小时,分钟和秒。例如:

3天13小时4分25秒

23天2小时41分3秒......

我有天和小时,分和秒分开,

我想要倒计时,因为他们的日期在一页(日期的数量是日期)

我使用此代码并在页面中只有一个日期时正常工作

html:

  <div class="row">

@{TimeSpan span = (item.DiscountExpireDate - DateTime.Now);}

    <ul class="countdown">
        <li>
             <span class="seconds">@span.Seconds</span>
        <p class="seconds_ref">ثانیه</p>
        </li>
         <li class="seperator">:</li>
         <li>
         <span class="minutes">@span.Minutes</span>
           <p class="minutes_ref">دقیقه</p>
           </li>
           <li class="seperator">:</li>

           <li>
          <span class="hours">@span.Hours</span>
            <p class="hours_ref">ساعت</p>
           </li>
           <li class="seperator"> </li>
           <li>
           <span class="days">@span.Days</span>
         <p class="days_ref">روز</p>
         </li>
         </ul>

</div>

和js

<script type="text/javascript">//for countdown
    $(document)
        .ready(function () {
            var theDaysBox = $(".days");
            var theHoursBox = $(".hours");
            var theMinsBox = $(".minutes");
            var theSecsBox = $(".seconds");

                var refreshId = setInterval(function() {
                        var currentSeconds = theSecsBox.text();
                        var currentMins = theMinsBox.text();
                        var currentHours = theHoursBox.text();
                        var currentDays = theDaysBox.text();

                        if (currentSeconds == 0 && currentMins == 0 && currentHours == 0 && currentDays == 0) {
                            // if everything rusn out our timer is done!!
                            // do some exciting code in here when your countdown timer finishes

                        } else if (currentSeconds == 0 && currentMins == 0 && currentHours == 0) {
                            // if the seconds and minutes and hours run out we subtract 1 day
                            theDaysBox.html(currentDays - 1);
                            theHoursBox.html("23");
                            theMinsBox.html("59");
                            theSecsBox.html("59");
                        } else if (currentSeconds == 0 && currentMins == 0) {
                            // if the seconds and minutes run out we need to subtract 1 hour
                            theHoursBox.html(currentHours - 1);
                            theMinsBox.html("59");
                            theSecsBox.html("59");
                        } else if (currentSeconds == 0) {
                            // if the seconds run out we need to subtract 1 minute
                            theMinsBox.html(currentMins - 1);
                            theSecsBox.html("59");
                        } else {
                            theSecsBox.html(currentSeconds - 1);
                        }
                    },
                    1000);

       });
</script>

但是当我在页面上有多个日期时效果不好,似乎数字总和在一起。

https://jsfiddle.net/a7ucv468/1/

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您只需要为每个元素标识一个包装元素,如:

X/Y

然后在元素选择器前面使用$(this).find()。这会将函数绑定到倒计时的每个实例。目前它只是寻找类“天”,所以它只会使用它找到的第一个,或导致其他错误。我很快就会写一个有效的例子。

我不确定这些数字,但它们似乎在这里独立运行(将超时设置为较少以进行调试)https://jsfiddle.net/7nzcdhn3/