мой javascript cookie работает для моего шоу и скрытия, но не работает для моего переключателя? - PullRequest
0 голосов
/ 10 июня 2011

У меня есть файл 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>

Ответы [ 2 ]

0 голосов
/ 10 июня 2011

Вот лучший скрипт 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');
}
0 голосов
/ 10 июня 2011

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

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

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

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