<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title>倒计时</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
 
</script>
<style>
.a2{ margin-bottom:20px; display:none;}
</style>
</head>
 
<body>
<b class="timer" id="end_date_0" data-time="1380443160">1</b>
<b class="timer" id="end_date_1" data-time="1396367940">2</b>
<script type="text/javascript">
function show_date_time(end,style,id){
    today=new Date(); 
    timeold=((end)*1000-today.getTime());
console.log(old + "--" +timeold);
//看下old的值,和timeold的值,第一个old的值,计算出来的timeold<0成立。
//这个还不是根本原因,根本原因是你的id=0,是恒定的,在下面的代码做了更正。查看jquery部分的注释。
//多个计时器是不会出问题的。
    if (timeold < 0) {
console.log(timeold);
   return;
    }
    setTimeout("show_date_time("+end+','+style+','+id+")", 100); 
    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_hrsold-hrsold)*60); 
    e_seconds = (e_minsold-minsold)*60;
    seconds=Math.floor((e_minsold-minsold)*60); 
    ms = e_seconds-seconds;
    ms = new String(ms);
    ms1 = ms.substr(2,1);
    ms2 = ms.substr(2,2);
    hrsold1=daysold*24+hrsold;
    if(style == 1){
        $("#end_date_"+id).html('<em>'+(hrsold1<10?'0'+hrsold1:hrsold1)+"</em>小时<em>"+(minsold<10?'0'+minsold:minsold)+"</em>分<em>"+(seconds<10?'0'+seconds:seconds)+"</em>秒");
    }else if(style == 2){
        $("#end_date_"+id).html('<em>'+daysold+"</em>天<em>"+(hrsold<10?'0'+hrsold:hrsold)+"</em>时<em>"+(minsold<10?'0'+minsold:minsold)+"</em>分<em>"+(seconds<10?'0'+seconds:seconds)+"</em>秒");
    }else if(style == 3){
        $("#end_date_"+id).html("<em>"+(hrsold1<10?'0'+hrsold1:hrsold1)+"</em>小时<em>"+(minsold<10?'0'+minsold:minsold)+"</em>分<em>"+(seconds<10?'0'+seconds:seconds)+"."+ms1+"</em>秒");
    }else{
        $("#end_date_"+id).html(daysold+"天"+(hrsold<10?'0'+hrsold:hrsold)+"小 时"+(minsold<10?'0'+minsold:minsold)+"分"+(seconds<10?'0'+seconds:seconds)+"秒."+ms2);
    }
}
$(".timer").each(function(i) {
        var reg = /^[0-9]+$/;
        var timer = $(this).attr('data-time');
        var id = $(this).attr('id');
        if (reg.test(timer)) {
            show_date_time(timer, 3, 0);
//这里添加一个id=0是个什么意思?所以就只能会给第一个改变时间,可是有一个问题,就是你id=end_date_0的这个里面。data-time的值,计算出来的timeold是小于0的,所以根本就没有执行第一个计算,当这个each执行到第二个的时候,data-time的值符合要求了,就会添加计时了。这个可以从时间那块看的。这个在上面的代码做注释。
        }
    });
</script>
</body>
</html>