Значение cookie для определения стиля при загрузке страницы - PullRequest
1 голос
/ 04 мая 2010

Я использую скрипты отсюда http://www.quirksmode.org/js/cookies.html и успешно создал файл cookie .. он устанавливается на основании ответа пользователя на раскрывающийся возраст. Однако у меня проблемы с этим. Я хотел бы определить стиль, если присутствует cookie. Вот основная часть моих сценариев ..

function createCookie(name,value,days){
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    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,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function checkAge(){
    var min_age = 13;
    var year = parseInt(document.forms["emailForm"]["year"].value);
    var month = parseInt(document.forms["emailForm"]["month"].value) - 1;
    var day = parseInt(document.forms["emailForm"]["day"].value);
    var theirDate = new Date((year + min_age), month, day);
    var today = new Date;

    if ( (today.getTime() - theirDate.getTime()) < 0) {
        var el = document.getElementById('emailBox');
        if(el){
            el.className += el.className ? ' youngOne' : 'youngOne';
        }
        document.getElementById('emailBox').innerHTML = "<style type=\"text/css\">.formError {display:none}</style><p>Good Bye</p><p>You must be 13 years of age to sign up.</p>"; 
        createCookie('age','not13',0)
        return false;
    }
    else {
        createCookie('age','over13',0)
        return true;
    };
};

window.onload=function(){
   var x = readCookie('not13');
   if (x)  {    
        document.getElementById('emailBox').innerHTML = "<style type=\"text/css\">.formError {display:none}</style><p>Good Bye</p><p>You must be 13 years of age to sign up.</p>"; 
   }
}

Проверка возраста работает, и cookie установлен .... нет ошибок (из Firebug) .. кто-нибудь может увидеть, что я делаю неправильно?

Ответы [ 3 ]

0 голосов
/ 04 мая 2010

Глядя на ваш код, он должен работать. В этом нет ничего неправильного.

Единственное, что я хотел бы предложить, это вместо того, чтобы вставлять тег style в пустой div , вставить тег link в заголовок . Это будет означать, что ваши изменения CSS и сопровождение не должны будут касаться кода js.

0 голосов
/ 05 мая 2010

Я понял .. Я искал значение cookie и мне нужно было найти имя, а затем создать оператор if на основе значения. итак ..

 var x = readCookie('age');
if (x=='not13')  {    
   document.getElementById('emailBox').innerHTML = "<style type=\"text/css\">.formError {display:none}</style><p>Good Bye</p><p>You must be 13 years of age to sign up.</p>"; 
   }
0 голосов
/ 04 мая 2010

с jQuery будет примерно таким

if (x) {
    var style =  "<style type=\"text/css\">.form {display:none}</style>";
    $("header").append(style);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...