2012-06-08 23 views
1

昨天我问了关于在浏览器关闭时保存定时器的值,然后在用户打开它时再次开始计数。我发现使用cookie必须是一个很好的解决方案,所以我添加了set和getcookie函数,但仍然无法获取计时器值。这可能很容易,但我不能看到有什么问题,因为我仍然在JavaScript中过于noob。 有人知道我在做什么错吗? 谢谢! 这里的代码,我到目前为止:关闭浏览器并保存时间值并再次调用它 - 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> 
+0

我很困惑你的“java”标签 - 这是如何涉及Java的?它看起来都是JavaScript。你明白他们和白天一样不对,对吧? –

+1

不要在'setTimeout'中使用字符串。 – ddlshack

+0

将您的变量初始化为数字,而不是字符串。 – ddlshack

回答

1

首先,一些问题与您的代码:

  • 字符串不应setTimeout小号
  • 你使用的变量应该被初始化为整数,而不是字符串。

回到你的问题,请卸载事件,当用户关闭页面保存cookie的当前时间。然后,当用户再次打开该页面时,检测该cookie并从您离开的地方继续。

+0

如果您想添加其他信息,请编辑您的原始答案。 – ddlshack

+0

ok :)那么我该怎么办?如果我得到一些帮助,会很棒。 –

0

如果你不能弄清楚如何暂停,怎么样获取日期在浏览器关闭,然后让的日期,当它再次打开。计算差值并从计时器所在的值中减去差值。

我只是抛出一个大概的想法! :d

相关问题