I am new to javascript and I came across these functions which, I believe, are for storing a cookie with a name in it (the name being ‘value’). I just don’t understand it! The functions are as follows:
Making the cookie
function setCookie(c_name, value, expiredays) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
Checking wether there is a cookie stored or not
function getCookie(c_name) {
if (document.cookie.length>0) {
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1) {
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";", c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
There’s also a function for displaying a alert-box with the value stored in the cookie, but I’m too lazy to write it down! (I found it in a book)
EDIT: I decided to write the last function which displays a welcome message if the cookie is stored and displays a prompt box if it’s not set
Is it set? If so, do “foo”. If not, do “bar”
function checkCookie() {
username=getCookie('username');
if (username!=null && username!="") {
alert('Welcome again ' + username + '!');
} else {
username=prompt("Please enter your name:","");
if (username!=null && username!="") {
setCookie('username', username,365);
}
}
}
Making the cookie:
Let’s say you want to set a cookie called “favoriteColor” with the value “blue” that expires in a week. The code you want to run is
The function setCookie that you posted is designed to generate that line of code. It generates the date based on the period you give it, it escapes the text of the value, and concatenates the results to create the document.cookie string.
The only remaining tricky bit is that the expiredays parameter is optional; the line that creates the document.cookie string includes a conditional that checks whether expiredays exists, and doesn’t include the “expires” part of the string if expiredays doesn’t exist. This uses the “ternary operator”:
(expiredays==null) ? "" : ";expires="+exdate.toGMTString()means “if expiredays is null, use the empty string, otherwise use ‘;expires=”+exdate.toGMTString()'”.The second piece of code you posted is looking for the cookie by searching the set of cookies (which is a single string) for the name given (followed by =) and returning the text from that point up to the next semicolon. So it can pick “blue” out of
“favoriteBand=Foreigner;favoriteColor=blue;favoriteFood=sushi;”.