代码之家  ›  专栏  ›  技术社区  ›  Zac

页面加载时定义样式的cookie值

  •  1
  • Zac  · 技术社区  · 16 年前

    我在用这里的脚本 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 回复  |  直到 13 年前
        1
  •  0
  •   Germán Rodríguez    16 年前

    具有 jQuery 会是这样的

    if (x) {
        var style =  "<style type=\"text/css\">.form {display:none}</style>";
        $("header").append(style);
    }
    
        2
  •  0
  •   Ben Rowe    16 年前

    看看你的代码,它应该能工作。没什么不对的。

    我唯一的建议是不要注射 风格 标记为空 div ,注入 链接 标记到 头 . 这意味着您的css更改和维护不需要接触js代码。

        3
  •  0
  •   Zac    16 年前

    我得到了它。。我正在查找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>"; 
       }