[英]I'm having trouble reading a cookie in javascript
當我的網站上有多個Cookie時,我的JavaScript代碼不起作用。 我不知道如何在JavaScript中指定Cookie名稱,因為我缺乏經驗。 Cookie正在更改小孔的背景顏色。
有人知道我在做什么錯嗎?
這是我的代碼。
<div>
<article id="bg">
<h1>Kies een kleur en kijk wat voor cookie er wordt aangemaakt</h1>
<select id="theme" onchange="setColorCookie()">
<option value="Select Color">Kies een kleur</option>
<option value="red">Rood</option>
<option value="orange">Oranje</option>
<option value="yellow">Geel</option>
<option value="green">Groen</option>
<option value="blue">Blauw</option>
<option value="purple">Paars</option>
<option value="pink">Roze</option>
<option value="brown">Bruin</option>
<option value="black">Zwart</option>
<option value="white">Wit</option>
</select>
</article>
<script type="text/javascript">
window.onload = function ()
{
if (document.cookie.length != 0) {
var nameValueArray = document.cookie.split("=");
document.getElementById("theme").value = nameValueArray[1];
document.getElementById("bg").style.backgroundColor = nameValueArray[1];
}
}
function setColorCookie()
{
var selectedValue = document.getElementById("theme").value;
if (selectedValue != "Select Color")
{
document.getElementById("bg").style.backgroundColor = selectedValue;
document.cookie = "color=" + selectedValue + ";expires=Fri, 5 2019 01:00:00 UTC;";
}
}
</script>
</div>
在此處查找: MDN:Document.cookie或此處: JavaScript Cookies 。
而不是var nameValueArray = document.cookie.split("=");
,則應執行const myCookies = document.cookie.split(";");
。 因為:
https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie
allCookies = document.cookie;
在上面的代碼中,
allCookies
是一個字符串,其中包含所有cookie的分號分隔列表(即,鍵=值對)。
例如:
allCookies = document.cookie; // allCookies <= "cookie1=cow; cookie2 = pig; cookie3= chicken;"
cookiesArray = allCookies.split(';'); // cookiesArray[] <= ["cookie1=cow", "cookie2 = pig", "cookie3= chicken"]
另一個建議:
像這樣修改您的代碼:
<script type="text/javascript"> window.onload = function () { const allCookies = document.cookie; const cookiesArray = allCookies.split(';'); alert('allCookies:' + allCookies); alert('cookiesArray:' + JSON.stringify(cookiesArray)); if (document.cookie.length != 0) { ...
重新運行您的程序。 當“ onload()”觸發時,您將看到兩個連續的“警報”彈出窗口。
這應該有助於更好地解釋發生了什么。
請-請-如果有疑問請回發; 如果有什么你“不明白”。 這不是一個困難的概念-我絕對希望您理解它。
看看w3schools :
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var 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() {
var user = getCookie("username");
if (user != "") {
alert("Welcome again " + user);
} else {
user = prompt("Please enter your name:", "");
if (user != "" && user != null) {
setCookie("username", user, 365);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.