У меня проблемы с чтением куки в javascript - PullRequest
0 голосов
/ 04 марта 2019

Когда на моем сайте несколько файлов cookie, мой код JavaScript не работает.Я не знаю, как указать имя куки в javascript, потому что мне не хватает опыта.Печенье изменяет цвет фона атрикулы.

Кто-то знает, что я делаю неправильно?

это мой код.

<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>

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Взгляните на 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);
    }
  }
}
0 голосов
/ 04 марта 2019

Смотрите здесь: MDN: Document.cookie или здесь: Файлы cookie JavaScript .

Вместо 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"]

Еще одно предложение:

  1. Измените свой код следующим образом:

    <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) {
               ...
    
  2. Перезапустите вашу программу.Когда срабатывает onload (), вы увидите два последовательных всплывающих окна с предупреждением.

    Это должно помочь лучше объяснить, что происходит.

  3. Пожалуйста, -ПОЖАЛУЙСТА - напишите, если у вас есть вопросы;если есть что-то, чего ты не получаешь.Это не сложная концепция - я определенно хочу, чтобы вы поняли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...