Discuz教程网

[已解决]请帮忙修改一个Discuz倒计时插件,谢谢支持!

[复制链接]
authicon 竞淘网 发表于 2015-4-7 09:45:00 | 显示全部楼层 |阅读模式
本站发布分类信息,后台可以设置活动结束时间,变量名称为{jssj_value},前台显示如“结束时间:2015-04-07”,现在想把这个活动结束时间改成倒计时模式,如下图右侧:



以上展示帖分别为:
左侧效果页:http://demo.6655.net.cn/forum.php?mod=viewthread&tid=5
右侧效果页:http://demo.6655.net.cn/forum.php?mod=viewthread&tid=4
其中后面这个帖子设置的活动到期时间是2015-04-01,但现在倒计时却显示还有360多天结束的。

现在问题是我不懂程序语言,活动过期了不能正常显示活动已结束。

具体修改的想法是:

1. 以“{jpks_value} ”所确定的时刻为最后结束时间倒计时;
2. 倒计时显示动态的秒表结果;
3. 以活动结束后三天分别显示“-1天”、“-2天”、“-3天”,三天之后即显示“活动已结束”。


详情请查看: http://demo.6655.net.cn/forum.php?mod=viewthread&tid=6&extra=page%3D1测试用户账号密码分别为 test、test123
如果需要提供后台管理员账号、密码修改、调试的,请直接QQ联系我,谢谢支持!
最佳答案
avatar
2015-4-9 11:38:59
竞淘网 发表于 2015-4-9 08:47
到期时间设置成2015-04-08 23:59:59,今天显示仍然是“活动已结束”,不能实现【以活动结束后三天分别显示 ...

2.zip (965 Bytes, 下载次数: 7)



上一篇:“互联网+”时代,看我是怎么借助而赢得第一桶金
下一篇:QQ注册新用户到完善帐号信息时不能完成绑定,但后台显示注册成功
authicon dly 发表于 2015-4-7 10:38:55 | 显示全部楼层
function showsecdtime() {
        var today =NewDate("2015-04-01 23:59");
        var birthDay=new Date();
        var timeold=today.getTime()-birthDay.getTime();
        if(timeold < 0){
                if(timeold > -86400){
                        document.getElementById("showsecdtime").innerHTML = '<span>-1天</span>';
                }else if(timeold > -172800){
                        document.getElementById("showsecdtime").innerHTML = '<span>-2天</span>';
                }else if(timeold > -259200){
                        document.getElementById("showsecdtime").innerHTML = '<span>-3天</span>';
                }else{
                        document.getElementById("showsecdtime").innerHTML = '<span>活动已结束</span>';
                }
        }else{

                //alert("2015-04-01 23:59");
                var secdtimeold=timeold/1000
                var secondsold=Math.floor(secdtimeold);
                var msPerDay=24*60*60*1000;
        
                var msPerYear=365*24*60*60*1000;
                var e_Yearsold=timeold/msPerYear;
                var Yearsold=Math.floor(e_Yearsold);
                var e_daysold=(Yearsold-e_Yearsold)*-365
                var daysold=Math.floor(e_daysold);
                var e_hrsold=(daysold-e_daysold)*-24;
                var hrsold=numadd0(Math.floor(e_hrsold));
                var e_minsold=(hrsold-e_hrsold)*-60;
                var minsold=numadd0(Math.floor((hrsold-e_hrsold)*-60));
                //alert(minsold);
                var seconds=numadd0(Math.floor((minsold-e_minsold)*-60)).toString();
                document.getElementById("showsecdtime").innerHTML = daysold+'<span id="timetxt">天</span>'+hrsold+'<span id="timetxt">时</span>'+minsold+'<span id="timetxt">分</span>'+seconds+'<span id="timetxt">秒</span>';
                setTimeout(showsecdtime, 1000);
        }
}

authicon  楼主| 竞淘网 发表于 2015-4-7 10:59:36 | 显示全部楼层
本帖最后由 竞淘网 于 2015-4-7 11:06 编辑

你好,为什么我引入你的代码之后时间并不显示呢?
03.png

实际上,我也只是把 红色部分 的代码加到我的相应模板里的,但不知道为什么那里显示的却是空白了?
authicon dly 发表于 2015-4-7 12:55:03 | 显示全部楼层
if(timeold < 0){
        if(timeold > -86400){
                document.getElementById("showsecdtime").innerHTML = '<span>-1天</span>';
        }else if(timeold > -172800){
                document.getElementById("showsecdtime").innerHTML = '<span>-2天</span>';
        }else if(timeold > -259200){
                document.getElementById("showsecdtime").innerHTML = '<span>-3天</span>';
        }else{
                document.getElementById("showsecdtime").innerHTML = '<span>活动已结束</span>';
        }
}else{
        ...
}

重新改下格式,else if中间有空格
还有你的 {jpks_value}没被替换
  1. var today =NewDate("{jpks_value} 23:59");
复制代码

authicon  楼主| 竞淘网 发表于 2015-4-8 09:21:51 | 显示全部楼层
本帖最后由 竞淘网 于 2015-4-8 09:42 编辑
dly 发表于 2015-4-7 12:55
重新改下格式,else if中间有空格
还有你的 {jpks_value}没被替换

您好,按照您的指导,我把代码做了修改,倒计时基本显示正常了,但是活动过期后直接显示“活动已过期”,而不是以活动结束后三天分别显示“-1天”、“-2天”、“-3天”,三天之后即显示“活动已结束”。 也就是说中间的那个IF代码貌似没有生效,是不是前面还有一个IF语句导致的呢?
我的代码如下:
  1. <a id="showsecdtime"></a>
  2.                                 <script type="text/javascript">
  3.                                 function NewDate(str) {
  4.                                         var date = new Date(Date.parse(str.replace(/-/g,   "/")));
  5.                                         return date;
  6.                                 }
  7.                                 function showsecdtime() {
  8.                                         var today =NewDate("{jssj_value} 23:59");
  9.                                         var birthDay=new Date();
  10.                                         var timeold=today.getTime()-birthDay.getTime();
  11.                     if(timeold < 0){
  12.                         if(timeold > -86400){
  13.                             document.getElementById("showsecdtime").innerHTML = '<span>-1天</span>';
  14.                         }else if(timeold > -172800){
  15.                             document.getElementById("showsecdtime").innerHTML = '<span>-2天</span>';
  16.                         }else if(timeold > -259200){
  17.                             document.getElementById("showsecdtime").innerHTML = '<span>-3天</span>';
  18.                         }else{
  19.                             document.getElementById("showsecdtime").innerHTML = '<span>活动已结束</span>';
  20.                         }
  21.                     }else{
  22.                                         var secdtimeold=timeold/1000
  23.                                         var secondsold=Math.floor(secdtimeold);
  24.                                         var msPerDay=24*60*60*1000;
  25.                                         var msPerYear=365*24*60*60*1000;
  26.                                         var e_Yearsold=timeold/msPerYear;
  27.                                         var Yearsold=Math.floor(e_Yearsold);
  28.                                         var e_daysold=(Yearsold-e_Yearsold)*-365
  29.                                         var daysold=Math.floor(e_daysold);
  30.                                         var e_hrsold=(daysold-e_daysold)*-24;
  31.                                         var hrsold=numadd0(Math.floor(e_hrsold));
  32.                                         var e_minsold=(hrsold-e_hrsold)*-60;
  33.                                         var minsold=numadd0(Math.floor((hrsold-e_hrsold)*-60));
  34.                                         //alert(minsold);
  35.                                         var seconds=numadd0(Math.floor((minsold-e_minsold)*-60)).toString();
  36.                                         document.getElementById("showsecdtime").innerHTML = daysold+'<span id="timetxt">天</span>'+hrsold+'<span id="timetxt">时</span>'+minsold+'<span id="timetxt">分</span>'+seconds+'<span id="timetxt">秒</span>';
  37.                                         setTimeout(showsecdtime, 1000);
  38.                                  }
  39.                                     function numadd0(num) {
  40.                                             if(num < 10) {
  41.                                                     num = '0'+num;
  42.                                             }
  43.                                             return num;
  44.                                     }
  45.                 }
  46.                                 showsecdtime();
  47.                                 </script>
复制代码



authicon dly 发表于 2015-4-8 12:18:29 | 显示全部楼层
if(timeold < 0){
        timeold = Math.abs(timeold);
        if(timeold < 86400){
                document.getElementById("showsecdtime").innerHTML = '<span>-1天</span>';
        }else if(timeold < 172800){
                document.getElementById("showsecdtime").innerHTML = '<span>-2天</span>';
        }else if(timeold < 259200){
                document.getElementById("showsecdtime").innerHTML = '<span>-3天</span>';
        }else{
                document.getElementById("showsecdtime").innerHTML = '<span>活动已结束</span>';
        }
}else{
        ...
}


authicon  楼主| 竞淘网 发表于 2015-4-9 08:47:31 | 显示全部楼层
到期时间设置成2015-04-08 23:59:59,今天显示仍然是“活动已结束”,不能实现【以活动结束后三天分别显示“-1天”、“-2天”、“-3天”,三天之后即显示“活动已结束”】的功能的。
页面显示如:http://demo.159u.com/2.html
authicon dly 发表于 2015-4-9 11:38:59 | 显示全部楼层    本楼为最佳答案   
竞淘网 发表于 2015-4-9 08:47
到期时间设置成2015-04-08 23:59:59,今天显示仍然是“活动已结束”,不能实现【以活动结束后三天分别显示 ...

2.zip (965 Bytes, 下载次数: 7)
authicon  楼主| 竞淘网 发表于 2015-4-9 12:41:39 | 显示全部楼层
真心想不到1314学习网的管理会这么尽心的帮助的,现在唯有一句话,谢谢啦![s_catsoul=5]给力![/s_catsoul]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2024-4-27 04:17

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表