2013-07-16 59 views
3

我正在制作一个网页,我必须做一个读取div的日期(div从数据库读取日期)的倒计时。从div中读取日期

当它接受字符串时,虽然它读取着名的“1970年1月1日”,但它的行为仍然没有读取我的输入日期。

的JavaScript:

<script language="JavaScript"> 

     var gcor = new Date(); 
     var dscad = new Date(document.getElementById("caramello")); 
     var difftempo = (dscad - gcor)/1000; 
     var minuto = 60; 
     var ora = 60 * 60; 
     var giorno = 60 * 60 * 24; 
     var giorest = Math.floor(difftempo/giorno) 
     var orerest = Math.floor((difftempo - giorest * giorno)/ora) 
     var minrest = Math.floor((difftempo - giorest * giorno - orerest * ora)/minuto) 
     var secrest = Math.floor((difftempo - giorest * giorno - orerest * ora - minrest * minuto)) 

     ID = window.setTimeout("update();", 1000); 

     function update() { 
      gcor = new Date(); 
      difftempo = (dscad - gcor)/1000; 
      minuto = 60; 
      ora = 60 * 60; 
      giorno = 60 * 60 * 24; 
      giorest = Math.floor(difftempo/giorno) 
      orerest = Math.floor((difftempo - giorest * giorno)/ora) 
      minrest = Math.floor((difftempo - giorest * giorno - orerest * ora)/minuto) 
      secrest = Math.floor((difftempo - giorest * giorno - orerest * ora - minrest * minuto)) 

      document.getElementById("Label1").innerText = giorest; 
      if (giorest < 10) { 
       document.getElementById("Label2").innerText = "0" + orerest; 
      } 
      else { 
       document.getElementById("Label2").innerText = orerest; 
      } 
      if (minrest < 10) { 
       document.getElementById("Label3").innerText = "0" + minrest; 
      } 
      else { 
       document.getElementById("Label3").innerText = minrest; 
      } 
      if (secrest < 10) { 
       document.getElementById("Label4").innerText = "0" + secrest; 
      } 
      else { 
       document.getElementById("Label4").innerText = secrest; 
      } 
      ID = window.setTimeout("update();", 1000); 
     } 

,这是HTML/ASP是与它相连:

<body> 
<form runat="server"> 
<div> 
    <div id="caramello" onclick="prova();">18 july 2013</div><br /> 
    <br /> 
    <asp:Label ID="Label6" runat="server" Text="Label"></asp:Label> 
    <br /> 
    <asp:Label ID="Label1" runat="server" Text="00"></asp:Label>g 
    <asp:Label ID="Label2" runat="server" Text="00"></asp:Label>h 
    <asp:Label ID="Label3" runat="server" Text="00"></asp:Label>m 
    <asp:Label ID="Label4" runat="server" Text="00"></asp:Label>s 
</div> 
    </form> 

+0

使用'document.getElementById(“caramello”)。innerText' – nrodic

+0

@nrodic我使用“.innerHTML”,但我看到代码没有到达函数upgrade()... – ProtoTyPus

回答

2

尝试像我的jsfiddle一个代码示例: http://jsfiddle.net/YTAXM/

<div id="caramello">July 18 2013</div> 
<br /> 
<br /> 
<div ID="Label6"></div> 
<br /> 
<div ID="Label1">00</div>g 
<div ID="Label2">00</div>h 
<div ID="Label3">00</div>m 
<div ID="Label4">00</div>s 

var dscad = new Date(document.getElementById("caramello").innerHTML); 

function update() { 

    var gcor = new Date(); 
    difftempo = (dscad - gcor)/1000; 
    minuto = 60; 
    ora = 60 * 60; 
    giorno = 60 * 60 * 24; 
    giorest = Math.floor(difftempo/giorno) 
    orerest = Math.floor((difftempo - giorest * giorno)/ora) 
    minrest = Math.floor((difftempo - giorest * giorno - orerest * ora)/minuto) 
    secrest = Math.floor((difftempo - giorest * giorno - orerest * ora - minrest * minuto)) 

    document.getElementById("Label1").innerHTML = giorest; 

    document.getElementById("Label2").innerHTML = orerest; 

    document.getElementById("Label3").innerHTML = minrest; 

    document.getElementById("Label4").innerHTML = secrest; 
} 



setInterval(function() { 
    update(); 
}, 1000); 
+0

它的工作原理!!非常感谢。 – ProtoTyPus

+0

@DanieleNekoLuciani优秀!现在请[接受答案](http://meta.stackexchange.com/a/5235)。 – nrodic

+1

我会接受我的其他答案。我试图尽可能接近OP的代码,但Daniel的答案是更清洁和更好的练习。 – Dodecapus

2

为什么你想从DIV阅读? 你可以写一个简单的方法来获取倒计时的结束日期,并用setInterval触发这个函数(在你的情况下显然更好)。 这个函数只是把剩下的时间写入你的div。 从ui阅读 - 特别是在你的情况下,从一个像div这样的静态元素 - 是一个很好的习惯。 dom只能从代码中写出。

- 编辑:添加上的jsfiddle 我添加上的jsfiddle代码例子来阐明我的回答 http://jsfiddle.net/FphCm/1/

// html 
<div id="Count"></div> 

// script 
var gcor = new Date(2013,12,31); // end date 

var update = function() { 
var temp = new Date(); 
temp.setTime(gcor.getTime() - temp.getTime()); 

var days = Math.floor(temp.getTime()/86400000); 
var hours = temp.getHours(); 
var minutes = temp.getMinutes(); 
var seconds = temp.getSeconds(); 

document.getElementById("Count").innerHTML = 
    (days > 0 ? days+"d " : "") + 
    (hours > 10 ? hours : "0"+hours) + ":" + 
    (minutes > 10 ? minutes : "0"+minutes) + ":" + 
    (seconds == 42 ? "<strong>" + seconds + "</strong>" : (seconds > 10 ? seconds : "0"+seconds)); 
}; 

var hUpdate = window.setInterval(update, 1000); 
+0

我明白了,你能举个例子吗?我不是真正的练习方法和同义词^^“ – ProtoTyPus

+0

+1”dom只能从代码中写出来“虽然这不是一个答案。 – nrodic

+1

从dom读取它不是一个好习惯 - 尤其是阅读(并且从字符串中解析数据的效率很高) 请注意我的编辑方式:将update()函数的外部范围内的var元素的句柄(从getElementById接收)保留在var中会更好一些。这也将摆脱在DOM上的句柄检索,并可以用来确定该元素是否仍然可见,如果它不再附加的间隔可以放弃。 –