倒计时是我们生活中比不可少的,尤其是搞程序开发的,涉及到电子商务的。都有倒计时的这个技术,首先我给大家分享一下我常常用的倒计时吧,
一、
用ajax写倒计时,ajax写倒计时,大家会发现一个确定就是他不停的想服务器发送请求,如果多了的话,就会对服务器施加压力,
大家如果要看看代码,我可以提供个大家参考,这是vs2005里面的,我以前也讲过vs2005怎么利用ajax不用安装,大家也可以去看看vs005不安装ajax一样用ajax
,
这是前面lianxi.aspx里面的,
<div>
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="upnl" runat="server">
<ContentTemplate>
<p><font>剩余时间:</font><span>00</span>天<asp:Label
ID="lblHours" runat="server"></asp:Label>:<asp:Label ID="lblMinutes"
runat="server"></asp:Label>:<asp:Label ID="lblSeconds" runat="server"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="timer" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
<asp:Timer ID="timer" runat="server" Interval="1000" OnTick="Timer_Tick" />
</div>
后面lianxi.aspx.cs
protected void Timer_Tick(object sender, EventArgs e)
{
CountdownSpan = endTime - DateTime.Now;//这是服务器端得到的生余时间
if (CountdownSpan.TotalSeconds > 0)
{
// lblDays.Text = CountdownSpan.Days.ToString();
lblHours.Text = CountdownSpan.Hours < 10 ? "0" + CountdownSpan.Hours.ToString() : CountdownSpan.Hours.ToString();
lblMinutes.Text = CountdownSpan.Minutes < 10 ? "0" + CountdownSpan.Minutes.ToString() : CountdownSpan.Minutes.ToString();
lblSeconds.Text = CountdownSpan.Seconds < 10 ? "0" + CountdownSpan.Seconds.ToString() : CountdownSpan.Seconds.ToString();
}
}
二、
用js写的时间倒计时
js文件里面的
function ShowTime() {
var nowtime=new Date(); //客户端的开始时间
$(".hddTime").each(function() {
var s = $(this).val(); //得到结束时间
var d = new Date(Date.parse(s.replace(/-/g, "/")));
var ticks = parseInt((d.getTime()-nowtime.getTime())/1000);
var hh = parseInt(ticks/3600);
var mm = parseInt((ticks%3600)/60);
var ss = ticks % 60;
if (isNaN(ss)) {
ss = 00;
}
if (isNaN(mm)) {
ss = 00;
}
if (isNaN(hh)) {
ss = 00;
}
if (hh >= 0) {
$("#hh").text(hh);
}
if (mm >= 0) {
$("#mm").text(mm);
}
if (ss >= 0) {
$("#ss").text(ss);
}
})
}
ShowTime()
var sh;
sh=setInterval(ShowTime,1000);
前台调用js
<div id="zhensale" runat="server">
<input type="hidden" class="hddTime" id="hddTime" runat="server"/> //服务器传过来的结束时间。
<p id="hh">00
</p>
<span>小时</span>
<p id="mm">00
</p>
<span>分</span>
<p id="ss">00
</p>
<span class="label">秒</span>
</div>
</div>
缺点
:这个时间,由于当前时间是直接获取你自己电脑上的时间,这样的话,会使时间根据你的电脑的时间改动而影响服务器要的结果,这是肯定是不行的。
三、
第三种,也就是这里面的最重要的一种,首先我们将服务器的剩余时间传到前台客户端。这个,都不用说了撒,肯定很简单的。我这里是把服务器的当前时间和结束时间传过来的,其实都是一样的原理。这样,再你怎么改变你电脑的时间,对他都没有影响了,是不是。
代码参考:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>倾颜戏羽倒计时</title>
<style type="text/css">
*{margin:0;padding:0;}
#content{width:300px;margin:0 auto;padding:10px;background:#eee;border:1px solid #999;}
#content p span{color:red;font:bold 20px Arial;}
#content p a{font:12px/23px '宋体';color:#888;}
.div1{ display:none;}
</style>
</head><body><div id="content">
<h1>限时抢购啦!</h1>
<p>还剩<span id="times">20小时23分8秒</span></p>
</div>
<input id="endtime" value="2011/4/06 12:20:12" visible="false"/> //开始时间,我这里写的是死的,你可以从服务处传过来
<input id="startime" value="2011/4/03 12:20:12" visible="false" /> //结束时间也是和开始时间一样的。
<script language="JavaScript">
var endtime= new Date(document.getElementById("endtime").value);
var nowtime= new Date(document.getElementById("startime").value);
var leftsecond=parseInt((endtime.getTime()-nowtime.getTime())/1000);//把剩余时间转化成秒。
function fresh()
{
leftsecond--;
d=parseInt(leftsecond/3600/24);
h=parseInt((leftsecond/3600)%24);
m=parseInt((leftsecond/60)%60);
s=parseInt(leftsecond%60);
document.getElementById("times").innerHTML=h+"小时"+m+"分"+s+"秒";
if(leftsecond<=0){
document.getElementById("times").innerHTML="抢购已结束";
clearInterval(sh);
}
}
fresh()
var sh;
sh=setInterval(fresh,1000);
</script>
</body>
</html>
分享到:
相关推荐
在JavaScript(JS)编程中,实现获取服务器时间并进行倒计时是一项常见的需求,尤其在构建Web应用时。以下是对这个主题的详细说明: 首先,理解服务器时间和客户端时间的概念至关重要。服务器时间是服务器上计算机...
对于Web应用,可以使用JavaScript在客户端进行倒计时,但服务器端的逻辑类似。 在实际开发中,可能还需要处理闰秒、时区转换等问题,以及异常处理和性能优化。总的来说,C#提供了丰富的日期时间操作功能,实现倒...
5. **AJAX**:如果需要在不刷新页面的情况下获取服务器上的最新倒计时信息,可能需要用到异步请求技术,如AJAX。 6. **服务器端编程**:在某些情况下,服务器端可能需要提供API接口,以便客户端获取准确的倒计时...
这个功能的主要目的是解决客户端时间不准确导致的倒计时错误问题,确保用户看到的时间与服务器保持同步。 Flash是一种广泛应用于创建动态内容、游戏和多媒体应用的技术,它允许开发者创建交互式的、基于矢量图形的...
因此,可以通过动态脚本获取服务器的当前时间,并以此为基础计算剩余时间,从而实现所有客户端的同步倒计时。 - **防刷新与防关闭机制**:通过计算服务器当前时间与结束时间之间的差值,即使用户刷新页面或关闭后再...
ASP.NET提供了AJAX Extensions和jQuery库来简化这一过程,通过异步请求,我们可以定期从服务器获取新的倒计时数据,并在客户端更新显示。 3. **服务器端计算**:在服务器端,我们需要编写代码来计算每个倒计时的...
在本文提供的代码示例中,通过JSP获取服务器时间,并通过JavaScript脚本在客户端浏览器上实现了倒计时功能。示例代码中使用了多种技术点,如Java的Calendar类获取服务器时间,HTML和JavaScript更新页面内容,以及...
- 如果涉及到服务器和客户端之间的交互,需要处理网络延迟问题,确保倒计时的同步性。 - 在移动设备上,要考虑电池消耗和性能优化,避免过于频繁的更新。 7. **扩展技术**: - 如果是在分布式系统中,可能需要...
倒计时通常是基于服务器时间,通过JavaScript在客户端实时更新显示的时间。在ASP.NET中,我们可以利用AJAX进行异步通信,定期从服务器获取剩余时间,然后更新页面元素。这个过程中,C#后端负责计算时间差并返回给...
1. **AJAX**:通过JavaScript的XMLHttpRequest对象或jQuery的$.ajax方法发送异步请求到服务器,获取倒计时的新状态,然后更新客户端的HTML元素,实现页面局部刷新。 2. **ASP.NET AJAX**:.NET框架提供的Ajax工具集...
"php + js倒计时刷新页面"是一个典型的前后端结合的应用场景,它利用PHP作为服务器端语言处理时间计算和逻辑,而JavaScript则在客户端实现动态更新倒计时并刷新页面的效果。下面将详细介绍这一技术实现的关键知识点...
这部分代码可能会结合服务器接口获取具体的倒计时数据,然后在客户端进行显示。这涉及到网络请求(如使用Retrofit或OkHttp)、数据解析(如JSON解析)和数据存储(如使用SharedPreferences存储临时数据)等相关技术...
每隔一段时间(比如每秒)向服务器发送请求,获取最新的倒计时状态,然后在客户端更新显示。这种方法可以避免整个页面的频繁刷新,提高用户体验。 总结来说,PHP实现倒计时涉及的主要知识点包括:使用`strtotime()`...
总之,通过正确地获取服务器时间,考虑网络延迟,以及处理本地时间与服务器时间的偏差,可以实现一个准确的JavaScript商品秒杀倒计时。这种方法不仅减少了服务器资源的占用,还能确保秒杀活动的公正性。
- 考虑时区和网络延迟:倒计时应基于服务器时间,而不是客户端时间,以减少时区差异和网络延迟带来的影响。 总的来说,"js 倒计时.zip"中的源码很可能是实现上述逻辑的一个简单实例,通过阅读和理解这段代码,...
3. **客户端**:使用JavaScript(可能配合jQuery库)监听页面加载或DOM就绪事件,获取服务器传递的秒数,并设置一个定时器,每秒更新页面上的倒计时显示。 4. **样式调整**:为了让倒计时组件漂浮,应用与上述相同的...
1. **服务端配合**:将倒计时逻辑移到服务器端,客户端只负责展示时间。每次用户打开H5页面时,通过Ajax请求获取当前剩余时间。这种方式虽然简单,但不能实时更新,可能存在用户打开页面时已经错过倒计时的状况。 2...
客户端(浏览器)使用JavaScript每隔一秒向服务器发送请求,获取当前时间与目标时间的差值,并在页面上实时更新显示。这种实现方式被称为AJAX(Asynchronous JavaScript and XML),虽然实际传输的数据不一定是XML,...
当用户开始计时,服务器记录开始时间,并在每次页面交互(如刷新)时,服务器提供当前时间,客户端根据这个时间差恢复计时器。这种方式能确保无论用户如何操作,计时器都不会被重置,但需要增加与服务器的交互次数,...
// 使用Ajax请求获取服务器上的倒计时数据 $.ajax({ url: 'countdown.php', // 假设这是获取倒计时信息的PHP脚本 success: function(data) { // 更新页面上的倒计时显示 $('#countdown').text(data); // 假设#...