关闭浏览器后保留时间值并再次调用它-Javascript?

关闭浏览器后保留时间值并再次调用它-Javascript?,javascript,html,timer,counter,Javascript,Html,Timer,Counter,我昨天问过,在浏览器关闭时保存一个计时器值,然后在用户打开它时再次开始计数。我发现使用cookie肯定是一个很好的解决方案,所以我添加了set和getcookie函数,但仍然无法获取计时器值。这可能很容易,但我看不出有什么不对,因为我对javascript还是太在行了。 有人知道我做错了什么吗? 非常感谢。 以下是我目前掌握的代码: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head&

我昨天问过,在浏览器关闭时保存一个计时器值,然后在用户打开它时再次开始计数。我发现使用cookie肯定是一个很好的解决方案,所以我添加了set和getcookie函数,但仍然无法获取计时器值。这可能很容易,但我看不出有什么不对,因为我对javascript还是太在行了。 有人知道我做错了什么吗? 非常感谢。 以下是我目前掌握的代码:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
    <title>Test</title>
    <script type="text/javascript">
var sec = 0;
var min =  0;
var hr = 0;
var dias = 0;
var bool = true;
function stopwatch() {
        sec++;
        if (sec == 60) {
            sec = 0;
            min += 1;
        }

        if (min == 60) {
            min = 0;
            hr += 1;
        }

        if (hr == 24) {
            hr = 0;
            dias += 1;
        }

        totalTime = ((dias<=9) ? "0" + dias : dias) + "d, " + ((hr<=9) ? "0" + hr : hr) + " : " + ((min<=9) ? "0" + min : min) + " : " + ((sec<=9) ? "0" + sec : sec);
        document.getElementById("timer").innerHTML = totalTime;
        if (bool == true) {
        start = setTimeout("stopwatch()", 1000);

        }
    }

function setCookie(name, value, expires) {
document.cookie = name + "=" + escape(value) + "; path=/" + ((expires == null) ? "" : "; expires=" + expires.toGMTString());
}



function getCookie (name) {
    var cname = name + "=";               
    var dc = document.cookie;

    if (dc.length > 0) {              
        begin = dc.indexOf(cname);       
            if (begin != -1) {           
            begin += cname.length;       
            end = dc.indexOf(";", begin);
                if (end == -1) end = dc.length;
                return unescape(dc.substring(begin, end));
            } 
        }
    return null;
}


var exp = new Date();                                  
exp.setTime(exp.getTime() + (1000 * 60 * 60 * 24 * 30));

    </script>
</head>
<body onload="stopwatch()">
    <div id="timer" name="timer"> </div>
  <button onclick="bool = false"; > pause </button>
  <button onclick="bool = true;stopwatch();" > resume </button>

    <form>
      <input type="button" value="Set a Cookie" onClick="setCookie('myCookie',timer.value, exp)">
    </form>
<form>
<input type="button" value="Get Cookie Value" onClick="this.form.tf.value = getCookie('myCookie')">
<input type="text" name="tf" size="30">
</form>

 </body>
</html>

试验
var-sec=0;
var min=0;
var-hr=0;
var-dias=0;
var bool=真;
功能秒表(){
sec++;
如果(秒=60){
秒=0;
min+=1;
}
如果(最小==60){
最小值=0;
hr+=1;
}
如果(hr==24){
hr=0;
dias+=1;
}

totalTime=((dias如果您不知道如何暂停它,那么获取浏览器关闭的日期,然后获取浏览器再次打开的日期如何。计算差值并从计时器的值中减去它


我只是给出了一个大概的想法!:D

如果你不知道如何暂停,那么先获取浏览器关闭的日期,然后再获取浏览器再次打开的日期如何。计算差值,然后从计时器的值中减去它


我只是提出一个大概的想法!:D

首先,您的代码有几个问题:

  • 字符串不应在
    setTimeout
    s中使用
  • 变量应该初始化为整数,而不是字符串


回到您的问题,使用卸载事件以用户关闭页面时的当前时间保存cookie。然后,当用户再次打开页面时,检测cookie并从您停止的位置继续。

首先,代码存在一些问题:

  • 字符串不应在
    setTimeout
    s中使用
  • 变量应该初始化为整数,而不是字符串


回到您的问题,使用卸载事件以用户关闭页面时的当前时间保存cookie。然后,当用户再次打开页面时,检测cookie并从您停止的位置继续。

我对您的“java”感到困惑标签——这与Java有什么关系?看起来都是JavaScript。你知道它们和白天一样不同,对吧?不要在
setTimeout
中使用字符串。将变量初始化为数字,而不是字符串。永远不要将字符串传递给
setInterval()
setTimeout()
。这样做和使用
eval>一样糟糕()
一旦使用变量,就会产生无法读取且可能不安全的代码,因为需要将变量插入字符串而不是传递实际变量。正确的解决方案是
setInterval(function(){/*your code*)},毫秒);
。这同样适用于
setTimeout()
。如果您只想在没有任何参数的情况下调用单个函数,也可以直接传递函数名:
setInterval(someFunction,msecs);
(请注意,函数名后面没有
()
)我对您的“java”感到困惑标签——这与Java有什么关系?看起来都是JavaScript。你知道它们和白天一样不同,对吧?不要在
setTimeout
中使用字符串。将变量初始化为数字,而不是字符串。永远不要将字符串传递给
setInterval()
setTimeout()
。这样做和使用
eval>一样糟糕()
一旦使用变量,就会产生无法读取且可能不安全的代码,因为需要将变量插入字符串而不是传递实际变量。正确的解决方案是
setInterval(function(){/*your code*)},毫秒);
。这同样适用于
setTimeout()
。如果只想调用一个没有任何参数的函数,也可以直接传递函数名:
setInterval(someFunction,msecs);
(请注意,函数名后面没有
()
)如果要添加其他信息,请编辑原始答案。如果要添加其他信息,请编辑原始答案。