3

我正在制作一个网页,我必须进行倒计时,从 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>

4

2 回答 2

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);
于 2013-07-16T20:50:43.407 回答
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);
于 2013-07-16T21:15:23.803 回答