用于在页面加载时定义样式的Cookie值

时间:2010-05-04 05:40:25

标签: javascript cookies

我正在使用这里的脚本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 :(得分:0)

带有jQuery

将是这样的

if (x) {
    var style =  "<style type=\"text/css\">.form {display:none}</style>";
    $("header").append(style);
}

答案 1 :(得分:0)

查看您的代码应该可行。这没什么不对的。

我唯一建议的是,不要将样式标记注入空 div ,而是将链接标记注入<强>头即可。这意味着您的css更改和维护不需要触及js代码。

答案 2 :(得分:0)

我得到了..我正在寻找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>"; 
   }