javascript - 设置 cookie 以在单击按钮时隐藏 div

标签 javascript jquery html cookies

我正在尝试显示默认情况下显示的 div(包含条款和条件),除非将 cookie 设置为隐藏它。

我已将我的代码添加到 JSFiddle

知道为什么我的代码不起作用吗?

JavaScript

    function TermsAndConditions(){
   days=30;
   myDate = new Date();
   myDate.setTime(myDate.getTime()+(days*24*60*60*1000));
   document.cookie = 'TermsAndConditions=Accepted; expires=' + myDate.toGMTString();
}
if ($.cookie("TermsAndConditions") !== Accepted)
{
    $("#terms-and-conditions").hide();
} 

HTML

  <h1>Terms and Conditions</h1>
    <p>Example Content</p>

  <span class="accept-button"><a href="#" onclick="TermsAndConditions()">Accept</a></span></div

>

最佳答案

您的脚本发生了很多事情。

Mark 为您提供了正确的起点:不引用 Accepted 不会让 JavaScript 满意;字符串文字必须有引号。

其次,您的 jsFiddle 没有链接 jQuery。在屏幕左侧的“Frameworks & Extensions”下,确保您选择了一个 jQuery 版本。

第三,jQuery 没有内置的$.cookie 方法;有提供该功能的扩展,但它不是默认的 jQuery。如果您使用的是 jQuery 插件,难道您不会也使用它来设置 cookie 吗?相反,您使用 native 浏览器扩展来设置 cookie。

第四,由于 jsFiddle 的工作方式,您不能在没有一些体操的情况下从 HTML 中调用 JavaScript 方法。最好在 JavaScript 中附加适当的功能。

因此,要获取您的 cookie,您可以这样做:

var cookie = document.cookie.split(';')
    .map(function(x){ return x.trim().split('='); })
    .filter(function(x){ return x[0]==='TermsAndConditions'; })
    .pop();

如果 cookie 存在,它将是一个键/值数组。然后您可以检查以确保它存在并包含您要查找的值:

if(cookie && cookie[1]==='Accepted') {
    $("#terms-and-conditions").hide();
}

然后我们将把点击功能从 HTML 移到 JavaScript 中:

$('.accept-button a').on('click', function(){
    TermsAndConditions();
    return false;
}); 

这里有一个适合你的 jsFiddle:http://jsfiddle.net/3d928/1/

请注意,在您的原始示例中,您没有在用户单击链接时隐藏 #terms-and-conditions 元素;您所做的只是设置 cookie。因此在用户重新加载页面之前它不会被隐藏。如果您想同时执行这两项操作,只需将元素也隐藏在点击处理程序中:

$('.accept-button a').on('click', function(){
    TermsAndConditions();                   // set cookie
    $("#terms-and-conditions").hide();      // hide element
    return false;
}); 

关于javascript - 设置 cookie 以在单击按钮时隐藏 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175873/

相关文章:

javascript - jQuery 不会解析带有称为选项的节点的 xml

javascript - 如何构造javascript文件?

php - HTML 表单不通过 PHP 文件更新 mySQL

javascript - 如何从 Instagram 应用内浏览器页面链接打开默认浏览器?

javascript - "trampoline"方法之间的区别

javascript - 访问数组中的 JavaScript 对象

ajax - 是否可以在 ajax get 请求中获取页面的一部分?

javascript - 在 Javascript 中更新多个 id

javascript - 强制粘贴事件以 base64 编码图像

javascript - Google 应用程序脚本,介绍如何根据从 html 形式的电子表格收到的数据创建 pdf 并通过电子邮件发送 pdf 文件