0

我正在尝试制作一个从 1 小时开始一直向下的 JavaScript 倒计时时钟。我在这个过程中只使用了一点 jQuery。

$(document).ready(function(){

var h,m,s,output;
$("#StartW").click(function(){
function startWork()
{
    h = 1;
    m = 0;
    s = 0;
    output = h + ":" + m + ":" + s;
    setInterval(function() {count()}, 1000);
}

function count()
{
    if(s == 0)
    {
        if(m == 0)
        {
            if(h == 0);
            {
                output = "time's up";
            }
            h = 0;
            m = 59;
            s = 59;
        }
    m = m - 1;
    s = 59;
    }
s = s - 1;
output = h + ":" + m + ":" + s;
document.getElementById("WTM").innerHTML = output;
}
});
});

1- StartW 是调用函数的按钮的 ID。2- WMT 是显示时钟的跨度 ID。

当我单击按钮时,我没有得到任何结果。什么都没发生。我的导航器中的 JavaScript 控制台根本没有显示任何错误。

4

2 回答 2

1

在您的点击事件函数中,您声明了两个函数,但从不调用它们,所以什么也没有发生。尝试这个:

$(document).ready(function(){

    var h,m,s,output;
    $("#StartW").click(function(){
        function startWork()
        {
            h = 1;
            m = 0;
            s = 0;
            output = h + ":" + m + ":" + s;
            setInterval(function() {count()}, 1000);
        }

        function count()
        {
            if(s == 0)
            {
                if(m == 0)
                {
                    if(h == 0)
                    {
                        output = "time's up";
                    }
                    h = 0;
                    m = 59;
                    s = 59;
                }
                m = m - 1;
                s = 59;
            }
            s = s - 1;
            output = h + ":" + m + ":" + s;
            document.getElementById("WTM").innerHTML = output;
        }
        startWork();
    });
});

修复压痕说的超级清楚,还有一条;线上if(h == 0);应该去掉

作为计算一小时的方法的注意事项,您需要了解它可能不是很准确。您要求代码等待 1000 毫秒以自己添加 1 秒,就像我们计算秒数时说“密西西比”以帮助我们等待下一秒一样。尽管 JavaScript 在 1 秒内计算 1000 毫秒更精确,正如我们所说的密西西比州恰好在一秒内,但它可能由于 X 和 Y 的原因而关闭。要知道已经过去了多长时间,唯一真正准确的方法是看时钟,一遍又一遍地看,直到它显示我们等了一个小时。所以,在 JS 中,保存启动时间,每隔一秒左右显示当前时间与启动时间的差值,并显示计时器。

于 2013-08-03T13:20:08.470 回答
1

实际上,在按下该按钮时,您不会调用任何功能,您只需启动它们。从点击事件中获取函数countstartWork,并执行类似的操作

$('#StartW').on( 'click', startWork );

在这里检查

于 2013-08-03T13:21:12.763 回答