我目前正在尝试了解JavaScript中的Cookie。
我的问题是:我有三个按钮,红,绿,蓝,如果我单击红色,例如,应将红色背景色保存在cookie中,以便重新加载网页上的红色。
document.cookie ="red";
document.cookie ="green";
document.cookie ="blue";
function BackgroundRed(){
document.cookie = "background-color=red";
}
<button onClick="BackgroundRed()" style="background-color:red">Rot</button>
<button onClick="alertCookie()" style="background-color:green">Grün</button>
<button onClick="alertCookie()" style="background-color:blue">Blau</button>
答案 0 :(得分:2)
您可以这样做:
window.addEventListener('DOMContentLoaded', function() {
var cookieValue = getCookie('backgroundColor'),
btns = document.querySelectorAll('.color-btn');
if (cookieValue) {
setBackgroundColor(cookieValue);
}
Array.from(btns).forEach(function(btn) {
btn.addEventListener('click', function() {
var color = this.getAttribute('data-color');
setBackgroundColor(color);
});
});
});
function setBackgroundColor(color) {
document.body.style.backgroundColor = color;
setCookie('backgroundColor', color);
}
function getCookie(name) {
var cookies = document.cookie.split(';'),
cookie = cookies.find(function(str) { return str.indexOf(name + '=') === 0; });
if (cookie) {
return cookie.split('=')[1];
}
return null;
}
function setCookie(name, value) {
document.cookie = name + '=' + value;
}
body { background: red; }
button { padding: 1em; }
[data-color="red"] { background: red; }
[data-color="blue"] { background: blue; }
[data-color="green"] { background: green; }
<button class="color-btn" data-color="red"></button>
<button class="color-btn" data-color="blue"></button>
<button class="color-btn" data-color="green"></button>
注意:此演示无法在Stack Overflow上运行,因为它已被沙盒化,并且不接受Cookie
编辑:
在上面的示例中,为了清楚起见,我没有在Cookie上设置有效期限。这意味着该cookie仅在当前会话(即,当您关闭所有浏览器选项卡时,它将消失)中停留。您可以选择将其保留更长的时间。例如,一年:
var expiry = new Date();
expiry.setFullYear(expiry.getFullYear() + 1);
document.cookie = name + '=' + value + '; expires=' + expiry.toUTCString() + ';';