Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的计时器控件_Javascript_Html_Settimeout - Fatal编程技术网

javascript中的计时器控件

javascript中的计时器控件,javascript,html,settimeout,Javascript,Html,Settimeout,我在我的项目中使用定时器,我有两个问题。当开始按钮按下时,时间应开始;当结束按钮按下时,时间应结束。 但1)单击结束按钮时 时间不会停止。 2) 当时间减少并达到1分钟时。时间停止。它也应以秒为单位重复使用 我的建议是: var tim; var sec; var f = new Date(); function f1() { sec = 10 * 60; f2(); document.getElementById("starttime").i

我在我的项目中使用定时器,我有两个问题。当开始按钮按下时,时间应开始;当结束按钮按下时,时间应结束。
但1)单击结束按钮时
时间不会停止。
2) 当时间减少并达到1分钟时。时间停止。它也应以秒为单位重复使用


我的建议是:

var tim;
var sec;
var f = new Date();

function f1() {
    sec = 10 * 60;
    f2();
    document.getElementById("starttime").innerHTML = "Your started your Exam at " + f.getHours() + ":" + f.getMinutes();
}

function f2() {
    if (sec > 0) {
        sec--;
        tim = setTimeout(f2, 1000);
    } else {
        document.getElementById("starttime").innerHTML = "times up!!!!";
    }
    
    var min = Math.floor(sec / 60);
    var secDisplay = sec % 60;
    
    document.getElementById("showtime").innerHTML = "Your Left Time  is : " + min + " Minutes," + secDisplay + " Seconds";
}

function end() {
    clearTimeout(tim);
    sec = 0;
    f2();
}
变化如下:

  • 删除了
    min
    变量,只使用总秒数,而不是两个变量。为了便于显示,我们可以根据总秒数轻松计算分钟数。使用seconds变量可以更轻松地检查剩余时间。正如您所看到的,代码简化了很多

  • 将setTimeout更改为将函数作为参数,而不是字符串

  • 添加了
    end()
    函数,单击“结束”按钮时将调用该函数

  • 将秒数移到内部
    f1()
    ,以便可以重复启动和结束秒数,而无需重新加载页面

  • 删除了不必要的
    parseInt()
    调用。sec变量已经是数值类型,因此无需转换


当秒数降至
0
时,计时器将停止。如果您希望在剩余时间达到一分钟时停止,只需将
f2()
中的条件更改为
If(sec>60){

关于结束按钮的第一个问题,我看不到任何结束按钮功能。但是您可以使用一个清除超时的停止功能

function f3() {
    clearTimeout(tim);
    //update any text you wish here or move to the next page..
}
对于第二个问题,为什么它以1分钟结束。在检查分钟值是否为零之前,先减小分钟值。因此,当到达f2时,秒为0,分钟为1,然后将分钟值减小到0。,然后检查它是否为零并结束执行。 要解决这个问题,请将“min=parseInt(min)-1;”移动到else之后,它也应该计算最后一分钟


另外,您不需要parseint,因为您使用的是numbers allready

您也可以发布事件绑定代码吗?谢谢您…在开始按钮onclick=“f1()”中时间计数开始…然后在结束按钮我必须停止计时器…plz帮助更新的答案,包括在按下结束按钮时结束的功能。谢谢,先生…工作正常…时间结束后导航到另一页…在浏览器中返回按钮(返回到一页)按下按钮后,返回导航应该停止…请帮助我只需更改
时间!!!!
部分以执行
window.location='newpage.html
,就像您最初一样。我更改它只是为了在jsfiddle.nethank u上测试它,先生…当时间过去时,导航到另一个页面…在浏览器中返回按钮(返回到一页)被按下它向后导航它应该停止…请帮助我
function f3() {
    clearTimeout(tim);
    //update any text you wish here or move to the next page..
}