关闭浏览器后保留时间值并再次调用它-Javascript?
我昨天问过,在浏览器关闭时保存一个计时器值,然后在用户打开它时再次开始计数。我发现使用cookie肯定是一个很好的解决方案,所以我添加了set和getcookie函数,但仍然无法获取计时器值。这可能很容易,但我看不出有什么不对,因为我对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&
<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);
(请注意,函数名后面没有()
)如果要添加其他信息,请编辑原始答案。如果要添加其他信息,请编辑原始答案。