мой файл cookie javascript работает для моего отображения и скрытия, но не работает для моего переключения?

#javascript #cookies

#javascript #файлы cookie

Вопрос:

У меня есть файл cookie, который запоминает, скрыт ли мой выпадающий список, виден он или нет. Затем я добавил изображение в выпадающий список и также переключил фотографии, но файл cookie, похоже, не помнит, в каком состоянии находится переключатель.

 <script type="text/javascript">
<!--
var state;
var stateTog;
window.onload = function () {
    obj = document.getElementById('featured');
    state = (state == null) ? 'hide' : state;
    obj.className = state;
    document.getElementById('featured-header').onclick = function () {
        var option = ['tel1', 'tel2'];
        for (var i = 0; i < option.length; i  ) {
            objTog = document.getElementById(option[i]);
            objTog.className = (objTog.className == "visible") ? "hidden" : "visible";
        }
        obj.className = (obj.className == 'show') ? 'hide' : 'show';
        state = obj.className;
        stateTog = objTog.className;
        setCookie();
        return false;
    }
}
function setCookie() {
    exp = new Date();
    plusMonth = exp.getTime()   (31 * 24 * 60 * 60 * 1000);
    exp.setTime(plusMonth);
    document.cookie = 'State='   state   ';expires='   exp.toGMTString();
    document.cookie = 'StateTog='   stateTog   ';expires='   exp.toGMTString();
}
function readCookie() {
    if (document.cookie) {
        var tmp = document.cookie.split(';')[0];
        state = tmp.split('=')[1];
        stateTog = tmp.split('=')[1];
    }
}
readCookie();
//-->
</script>
  

Комментарии:

1. Если вам нужна помощь, вам нужно будет расширить свой вопрос: с какой конкретной проблемой вы столкнулись? Что вы пробовали? Что вы ожидаете, что произойдет?

2. Я только что добавил некоторую информацию, пожалуйста, дайте мне знать, если вам нужно больше

Ответ №1:

Вот лучший скрипт для создания файлов cookie

Использование:

     stateTog = objTog.className;
    setCookie("State",state,expiryDate);
    setCookie("StateTog",stateTog,expiryDate);


function readCookie() {
    state = getCookie("State");
    stateTog = getCookie("StateTog");

}
  

 // cookie.js file
var daysToKeep = 14; // default cookie life...
theCookie = '';
today      = new Date(); 
expiryDate = new Date(today.getTime()   (daysToKeep * 86400000));

/* Cookie functions originally by Bill Dortsch */
function setCookie (name,value,expires,path,theDomain,secure) { 
   value = escape(value);
   var theCookie = name   "="   value   
   ((expires)    ? "; expires="   expires.toGMTString() : "")   
   ((path)       ? "; path="      path   : "")   
   ((theDomain)  ? "; domain="    theDomain : "")   
   ((secure)     ? "; secure"            : ""); 
   document.cookie = theCookie;
} 

function getCookie(Name) { 
   var search = Name   "=" 
   if (document.cookie.length > 0) { // if there are any cookies 
      offset = document.cookie.indexOf(search) 
      if (offset != -1) { // if cookie exists 
         offset  = search.length 
         // set index of beginning of value 
         end = document.cookie.indexOf(";", offset) 
         // set index of end of cookie value 
         if (end == -1) end = document.cookie.length 
         return unescape(document.cookie.substring(offset, end)) 
      } 
   } 
} 
function delCookie(name,path,domain) {
   if (getCookie(name)) document.cookie = name   "="  
      ((path)   ? ";path="     path   : "")  
      ((domain) ? ";domain="   domain : "")  
      ";expires=Thu, 01-Jan-70 00:00:01 GMT";
//   alert(name ' marked for deletion');
}
  

Комментарии:

1. Я понимаю, что использую это в cookie js, но код использования, как мне использовать это, чтобы заставить мой файл cookie работать, я довольно новичок в Javascript.. спасибо за ваш ответ

2. @okMonty — Возможно, я пропустил ваш комментарий. Вы устранили свои проблемы?

Ответ №2:

Этот код в функции readCookie выглядит проблематичным:

 state = tmp.split('=')[1];
stateTog = tmp.split('=')[1];
  

Я ожидал бы, что state и stateTog будут иметь одинаковое значение, что не обязательно соответствует задуманному. Похоже, что код должен перебирать все пары ключ / значение.