可能重复:
What is the “best” way to get and set a single cookie value using JavaScript
我正在开展一个项目,需要检查cookie并判断它是否是20分钟。所以我写了一次这样的代码。 这只是我粘贴的javascript代码。
function checkcookie()
{
var difftime= getcookie();
// further operation comes here
}
var cookieminutes;
function getcookie()
{
var start = document.cookie.indexOf("expires");
var cookiedate;
if(start==-1)
{
cookiedate = new Date();
document.write("Start equal to -1");
document.cookie="expires="+cookiedate+",path=0,domain=0";
cookieminutes= cookiedate.getMinutes();
}
else
{
document.write("Start not equal to -1");
var date = new Date();
var minutes = date.getMinutes();
document.write("The difference is "+minutes);
document.write("<br />Cookie minutes is "+cookieminutes);
return (minutes-cookieminutes);
}
}
在函数getcookie中,变量cookieminutes将以未定义的形式出现。但正如我所知,因为它是一个全局变量,它应具有价值。
请有人告诉我们解决方案是什么。?
答案 0 :(得分:1)
您只在if语句的顶部设置了cookieminutes的值,因此else部分中的任何引用都将为null。
试试这个:
function getcookie()
{
var start = document.cookie.indexOf("expires");
var cookiedate;
cookiedate = new Date();
cookieminutes = cookiedate.getMinutes();
if(start==-1)
{
document.write("Start equal to -1");
document.cookie="expires="+cookiedate+",path=0,domain=0";
}
else
{
document.write("Start not equal to -1");
var date = new Date();
var minutes = date.getMinutes();
document.write("The difference is "+minutes);
document.write("<br />Cookie minutes is "+cookieminutes);
return (minutes-cookieminutes);
}
}
答案 1 :(得分:-4)
如果要使用全局变量(通常是错误的设计),请使用window显式设置和访问它们。 E.g:
window.cookieminutes = cookiedate.getMinutes();
以后:
document.write("Cookie minutes is "+window.cookieminutes);
放弃var cookieminutes;
正如我在评论中所说,看起来如果在给定页面加载时第一次调用getcookie,并且cookie存在(start!= -1),则从不设置cookieminutes。您需要确保不使用未定义的变量。