JS倒计时问题

JavaScript024

JS倒计时问题,第1张

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=UTF-8" />

<title>New Document </title>

<meta name="Generator" content="EditPlus">

<meta name="Author" content="DAYU">

<meta name="Keywords" content="">

<meta name="Description" content="">

</head>

<body>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=UTF-8" />

<title>New Document </title>

<meta name="Generator" content="EditPlus">

<meta name="Author" content="DAYU">

<meta name="Keywords" content="">

<meta name="Description" content="">

</head>

<?=date_default_timezone_set("Asia/Shanghai")?><!-- 这里会输出1先不管 -->

<?php

//3天后的时间

$d =strtotime('+3 days')

$threeday=date('Y-m-d H:i:s',$d)

?>

<script language="javascript">

function countdown(endtime, today)

{

//today = new Date()

//var testDate = new Date()

//today = new Date()

//target_time=new Date(endtime)

testDate = new Date()

today = testDate.format("yyyy-MM-dd hh:mm:ss")

target_time=endtime

//alert(target_time)

//timeold=(target_time.getTime()-today.getTime())

//alert(target_time)

//alert(today)return

//--------------------------------

timeold =DateDiff(target_time, today)

//alert(DateDiff(target_time, today))

//------------------------------

sectimeold=timeold/1000

secondsold=Math.floor(sectimeold)//走到这里好像就有问题了

msPerDay=24*60*60*1000

e_daysold=timeold/msPerDay

daysold=Math.floor(e_daysold)

e_hrsold=(e_daysold-daysold)*24

hrsold=Math.floor(e_hrsold)

e_minsold=(e_hrsold-hrsold)*60

minsold=Math.floor(e_minsold)

e_seconds=(e_minsold-minsold)*60

seconds=Math.floor(e_seconds)

e_millisecond=(e_seconds-seconds)*1000

millisecond=Math.floor(e_millisecond)

millisecond10=Math.floor(millisecond)

the_element = document.getElementById('counttime')

the_element.innerHTML="仅剩<br>"+daysold+"天"+hrsold+"小时"+minsold+"分"+seconds+"秒"

window.setTimeout("countdown('" + endtime + "', today)", 100)

}

</script>

<BODY>

<table><tr><td width="175"><SPAN id="counttime" style="FONT-WEIGHT: boldCOLOR: #000000FONT-FAMILY:Arial"></SPAN>

<script language="javascript">

/**

* 时间对象的格式化

*/

Date.prototype.format = function(format){

/*

* eg:format="yyyy-MM-dd hh:mm:ss"

*/

var o = {

"M+" : this.getMonth()+1, //month

"d+" : this.getDate(), //day

"h+" : this.getHours(),//hour

"m+" : this.getMinutes(), //minute

"s+" : this.getSeconds(), //second

"q+" : Math.floor((this.getMonth()+3)/3), //quarter

"S" : this.getMilliseconds() //millisecond

}

if(/(y+)/.test(format)) {

format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length))

}

for(var k in o) {

if(new RegExp("("+ k +")").test(format)) {

format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length))

}

}

return format

}

//比较2个时间的差值

function DateDiff(dmEndDate, dmStartDate) {

dmEndDate = dmEndDate.replace(/-/g, "/")

dmEndDate = new Date(dmEndDate)

dmStartDate = dmStartDate.replace(/-/g, "/")

dmStartDate = new Date(dmStartDate)

var time = dmEndDate.getTime() - dmStartDate.getTime()

var iDays = parseInt(time / (1000 * 60 * 60 * 24))

return iDays

}

//*****************************************

// var endtime = "<?=date('Y-m-d H:i:s',time())?>"

//var testDate = new Date()

//var today = testDate.format("yyyy年MM月dd日hh小时mm分ss秒")

//var today = testDate.format("yyyy-MM-dd hh:mm:ss")

//var endtime = '6-2-2013 17:35:00'

//var endtime = "<?=date('Y-m-d H:i:s',time())?>"

var endtime = "<?=$threeday?>"

//alert(endtime)

//var today = new Date()

var testDate = new Date()

var today = testDate.format("yyyy-MM-dd hh:mm:ss")

// alert(today)

//countdown("<?=date('Y-m-d H:i:s',time())?>", today)

countdown("<?=$threeday?>", today)

</script></td></tr></table>

</BODY>

</HTML>

</body>

</html>

</body>

</html>

-------------------------------------------------------

页面保存为PHP文件去执行.

仅剩

0天0小时0分0秒//这个结果不对,应该是2天几分几秒才对

<!DOCTYPE html>

<html lang="en">

<head>

<meta http-equiv="Content-Type" content="text/html charset=utf-8" />

<title>js实现倒计时60秒的简单代码(推荐)</title>

<script type="text/javascript" src="js/jquery.js"></script>

</head>

<body>

<input type="button" id="btn" value="免费获取验证码" onclick="settime(this)" />

<script type="text/javascript">

var countdown=60

function settime(val) {

if (countdown == 0) {

val.removeAttribute("disabled")

val.value="免费获取验证码"

countdown = 5

} else {

val.setAttribute("disabled", true)

val.value="重新发送(" + countdown + ")"

countdown--

setTimeout(function() {

settime(val)

},1000)

}

}

</script>

</body>

</html>

JavaScript简介

JavaScript 是脚本语言

JavaScript 是一种轻量级的编程语言。

JavaScript 是可插入 HTML 页面的编程代码。

JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

JavaScript 课外书

如果 JavaScript 教程学习完毕,并且需要更深入地学习这门语言,《JavaScript 高级教程》绝对是您最好的选择。本教程从 JavaScript 的历史开始讲起,直到当前它对 XML 和 Web 服务的支持。

将学习到如何扩展该语言,以使它适应特殊的需求。

还将学到如何使用 JavaScript 创建无缝的客户机 - 服务器通信。

在接触到的项目中,有页面需要做倒计时的效果,原本以为很容易,做好之后就提交测试了,但是好巧不巧,测试人员手机屏幕在倒计时过程中熄灭,唤醒屏幕之后发现倒计时是接着黑屏时候的时间继续进行。

问题:手机屏幕熄灭之后,倒计时停止,手机屏幕亮起之后,倒计时接着之前的时间倒计时(即,黑屏这段时间倒计时没有减少)

解决方法:获取倒计时开始时间start_time,在调用countTime是获取一下当前时间end_time,两者的时间差即为休眠时间,使用倒计时总时间-时间差,即为新的倒计时时间

亲测有效,若有其他的好方法求告知