I've been learning on how to get Cookies from a web page. Below is the code extracted from w3schools.com. I am not sure why they used this line of code in the getCookies(cname) function as shown below. Why should there be a blank space at the start of every string in the array "ca"? And why should we take c.substring(1)?
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
This is the full code:
function setCookie(cname, cvalue, exdays) {
const d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
let expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
let name = cname + "=";
let ca = document.cookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
let user = getCookie("username");
if (user != "") {
alert("Welcome again " + user);
} else {
user = prompt("Please enter your name:", "");
if (user != "" && user != null) {
setCookie("username", user, 365);
}
}
}
while loop use just remove first empty space;
for(let i = 0; i < ca.length; i++) {
let c = ca[i]; // example ' abde dfda'
while (c.charAt(0) == ' ') {
console.log('charAt =>',c.charAt(0))
console.log('subString =>',c.substring(1))
c = c.substring(1);
console.log('final c =>', c);
}
}
cookie first char is ' ' value then removing while loop by c.substring(1) example c = ' alertDialog=yes' that means c.chartAt(0) = ' ' ok while (' ' == ' ') condition true then c set c = 'alertDialog=yes' then 2nd loop false
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.