有没有人知道淘宝网的剩余时间(倒计时)是怎么做的?

chuanzai 2005-02-06 12:11:19
up
...全文
5977 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolnet 2005-02-26
  • 打赏
  • 举报
回复
//
// setExamTime
//
start=new Date();
//document.Form1.toTime.value是字符类型,需要转换成整形值
var examTime=parseInt(document.Form1.toTime.value,10);

function setExamTime()
{
//
//startTime
//
var Time="";
var h=start.getHours();
Time=h+":";

var m=start.getMinutes()
if(m<10)
Time=Time+"0"+m+":";
else
Time+=m+":";

var s=start.getSeconds();
if(s<10)
Time=Time+"0"+s;
else
Time+=s;

document.Form1.startTime.value=Time;
//这句话不能加,不知道为什么
//document.Form1.toTime.value="分钟";
//
// endTime
//
if(examTime+m>=60)
{

if(h==24)
h=1;
else
h+=1;
m=examTime+m-60;
}
else
{
m=examTime+m
}
//
Time=h+":";
if(m<10)
Time+="0"+m+":";
else
Time+=m+":";
if(s<10)
Time+="0"+s;
else
Time+=s;
document.Form1.endTime.value=Time;
//
//
//
go();
}
function go()
{
//
// nowTime
//
now=new Date();
var Time="";
var h=now.getHours();
Time=h+":";

var m=now.getMinutes()
if(m<10)
Time=Time+"0"+m+":";
else
Time+=m+":";

var s=now.getSeconds();
if(s<10)
Time=Time+"0"+s;
else
Time+=s;
document.Form1.nowTime.value=Time;
//
// leave time 70mintes, ||have 00:17:34,leave 00:52:26||have 17:00,leave 53:00||00:5:14--->01:04:46
// 还要考虑小时
//
time = (now.getTime() - start.getTime()) / 1000;
time = Math.floor( time);//去掉小数位数,保留整数
//
//00:00:00的情况,就是剩余的时间要大于等于examTime
//
if(time>=examTime*60)
{
alert("考试时间已到!!")
getAunwsers();
}

haveS = time % 60;
haveM = Math.floor( time / 60);

var leaveH;
var leaveM;
var leaveS;
//
if(haveS==0)
{
leaveM=examTime-haveM;
leaveH=Math.floor( leaveM / 60);
if(leaveM<10)
document.Form1.leaveTime.value="0"+leaveH+":"+"0"+leaveM+":00"
else
document.Form1.leaveTime.value="0"+leaveH+":"+leaveM+":00"
}
else
{
leaveS=60-haveS;
if(leaveS<10)
s="0"+leaveS;
else
s=leaveS;
leaveM=examTime-haveM-1;
//
leaveH=Math.floor( leaveM / 60);

if(leaveM<10)
document.Form1.leaveTime.value="0"+leaveH+":"+"0"+leaveM+":"+s;
else
document.Form1.leaveTime.value="0"+leaveH+":"+leaveM+":"+s;
}
setTimeout("go()",1000);
}
setExamTime();
-----------------------------------------------------------------
<div id="myleft" style="Z-INDEX: 1; RIGHT: 5px; VISIBILITY: visible; WIDTH: 150px; POSITION: absolute; TOP: 300px">
<table id="setTable" cellSpacing="0" cellPadding="0" width="150" bgColor="#ffffcc" border="0">
<tr>
<td align="center" colSpan="2">钟 表</td>
</tr>
<tr>
<td width="65">开始时间:</td>
<td width="85"><input readOnly type="text" size="10" name="startTime"></td>
</tr>
<tr>
<td>结束时间:</td>
<td><input readOnly type="text" size="10" name="endTime"></td>
</tr>
<tr>
<td>考试时间:</td>
<td><input id="toTime" readOnly type="text" size="10" name="toTime" runat="server"></td>
<tr>
<td D>现在时间:</td>
<td><input readOnly type="text" size="10" name="nowTime"></td>
</tr>
<tr>
<td D>剩余时间:</td>
<td><input readOnly type="text" size="10" name="leaveTime"></td>
</tr>
<tr>
<td align="center" colSpan="2"><br>
<input id="btnOK" onclick="getAunwsers()" type="submit" value="结束考试">
</td>
</tr>
</table>
</div>
foolnet 2005-02-26
  • 打赏
  • 举报
回复
我也写过这样的代码
function go()
{
//
// nowTime
//
now=new Date();
var Time="";
var h=now.getHours();
Time=h+":";

var m=now.getMinutes()
if(m<10)
Time=Time+"0"+m+":";
else
Time+=m+":";

var s=now.getSeconds();
if(s<10)
Time=Time+"0"+s;
else
Time+=s;
document.Form1.nowTime.value=Time;
//
// leave time 70mintes, ||have 00:17:34,leave 00:52:26||have 17:00,leave 53:00||00:5:14--->01:04:46
// 还要考虑小时
//
time = (now.getTime() - start.getTime()) / 1000;
time = Math.floor( time);//去掉小数位数,保留整数
//
//00:00:00的情况,就是剩余的时间要大于等于examTime
//
if(time>=examTime*60)
{
alert("考试时间已到!!")
getAunwsers();
}

haveS = time % 60;
haveM = Math.floor( time / 60);

var leaveH;
var leaveM;
var leaveS;
//
if(haveS==0)
{
leaveM=examTime-haveM;
leaveH=Math.floor( leaveM / 60);
if(leaveM<10)
document.Form1.leaveTime.value="0"+leaveH+":"+"0"+leaveM+":00"
else
document.Form1.leaveTime.value="0"+leaveH+":"+leaveM+":00"
}
else
{
leaveS=60-haveS;
if(leaveS<10)
s="0"+leaveS;
else
s=leaveS;
leaveM=examTime-haveM-1;
//
leaveH=Math.floor( leaveM / 60);

if(leaveM<10)
document.Form1.leaveTime.value="0"+leaveH+":"+"0"+leaveM+":"+s;
else
document.Form1.leaveTime.value="0"+leaveH+":"+leaveM+":"+s;
}
setTimeout("go()",1000);
}
l3300 2005-02-26
  • 打赏
  • 举报
回复
先用fancyf(等待……)的方法算出剩余时间,然后用javascript写的脚本

不是什么复杂的效果

===========================
同意
fanruinet 2005-02-26
  • 打赏
  • 举报
回复
这时淘宝网上的源代码
<SCRIPT language=JavaScript>
var auctionDate = 120;
var startTime = (new Date()).getTime();
var Temp;
var timerID = null;
var timerRunning = false;
function showtime()
{
now = new Date();
var ts=parseInt((startTime-now.getTime())/1000)+auctionDate;
var dateLeft = 0;
var hourLeft = 0;
var minuteLeft = 0;
var secondLeft = 0;
if(ts < 0)
{
ts = 0;
CurHour = 0;
CurMinute = 0;
CurSecond = 0;
} else {
dateLeft =parseInt(ts/86400);
ts = ts - dateLeft * 86400;
hourLeft = parseInt(ts/3600);
ts = ts - hourLeft * 3600;
minuteLeft = parseInt(ts/60);
secondLeft = ts - minuteLeft * 60;
}
if(hourLeft < 10) hourLeft = '0' +hourLeft;
if(minuteLeft < 10) minuteLeft = '0' +minuteLeft;
if(secondLeft<10) secondLeft='0'+secondLeft;
if( dateLeft > 0 )
dateLeft = dateLeft + "天" ;
else
dateLeft = "";
if( hourLeft > 0 )
hourLeft = hourLeft + "小时" ;
else
{
if( dateLeft != "" )
hourLeft = "00小时";
else
hourLeft = "";
}
if( minuteLeft > 0 )
minuteLeft = minuteLeft + "分钟" ;
else
{
if( dateLeft !="" || hourLeft != "")
minuteLeft = "00分钟";
else
minuteLeft = "";
}
if( secondLeft > 0 )
secondLeft = secondLeft + "秒" ;
else
{
if( dateLeft !="" || hourLeft != "" || minuteLeft != "")
secondLeft = "00秒";
else
secondLeft = "";
}
if (dateLeft == '') {
Temp=dateLeft+hourLeft+minuteLeft+secondLeft ;
}else {
Temp=dateLeft+hourLeft;
}
if(dateLeft <=0 && hourLeft<=0 && minuteLeft<=0 && secondLeft <=0)
{
Temp = "成交结束";
stopclock();
}
if (document.getElementById('time2')) document.getElementById('time2').innerHTML=Temp;
timerID = setTimeout("showtime()",1000);
timerRunning = true;
}
function stopclock()
{
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;
}
function macauclock()
{
stopclock();
showtime();
}
function onloadall()
{
macauclock();
try
{
initprovcity();
}
catch(e)
{
}
}
try
{
onload=onloadall();
}
catch(e)
{
}
</SCRIPT>
生成页面的时候把剩余的秒数写在<font id="time2">18595</font>里面就可以了。
gxh973121 2005-02-25
  • 打赏
  • 举报
回复
页面加载时读一次时间,让后用javascript计算刷新
yizhixiaozhu 2005-02-25
  • 打赏
  • 举报
回复
up
lovebanyi 2005-02-25
  • 打赏
  • 举报
回复
在javascript设置一个时间的变量.如果有刷新的页面的话就要取数据库的了.
没有话.就让时间慢慢的减了.1S要减一次就行了
噯卟釋手 2005-02-07
  • 打赏
  • 举报
回复
up
fanruinet 2005-02-07
  • 打赏
  • 举报
回复
要是在网页上走秒的话最好就是用Javascript来实现了
TonyTonyQ 2005-02-07
  • 打赏
  • 举报
回复
同意楼上的,把过期时间或者登陆时间放在数据库里,显示页面时,在服务器端算出剩余时间,然后可以放在一个隐藏的页面元素里(<input type='hidden'>),然后客户端的javascript读取这个时间,开始做倒计时的显示。
yufenfeila 2005-02-07
  • 打赏
  • 举报
回复
先用fancyf(等待……)的方法算出剩余时间,然后用javascript写的脚本

不是什么复杂的效果
kenMoxi 2005-02-07
  • 打赏
  • 举报
回复
up
chuanzai 2005-02-07
  • 打赏
  • 举报
回复
to fancyf(等待……)
不明白
大哥,你去淘宝网看了他的效果吗?
takki 2005-02-07
  • 打赏
  • 举报
回复
up
fanruinet 2005-02-06
  • 打赏
  • 举报
回复
更新的频率?如果按我说的那样做,每次显示页面都更新,实时的
AllenTing 2005-02-06
  • 打赏
  • 举报
回复
那时间更新的频率有多大
yizhixiaozhu 2005-02-06
  • 打赏
  • 举报
回复
up
fanruinet 2005-02-06
  • 打赏
  • 举报
回复
把过期的时间存到数据库中,在编程时用DateTime类型然后生成网页的时候,读取记录后用System.TimeSpan remainTime = expireTime.Subtract(DateTime.Now);
remainTime就是剩余时间(倒计时)
liulxmooo 2005-02-06
  • 打赏
  • 举报
回复
up

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧