显示Cookie是否存在Cookie

时间:2018-07-18 21:31:22

标签: javascript jquery cookies hide

所以...我一直在尝试为经常访问我网站的访客显示一个元素。

这就是我要尝试的方式:(您也可以see this JSfiddle

$(document).ready(function() {
  // If the 'show cookie is set we show the message
  if (!readCookie('show')) {
    $('#hide').show();
  }
  else {
    $("#hide").hide();
    createCookie("show", true, 1);
  }
  return false;
});

我还使用了我从w3schools获得的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 eraseCookie(name) {
  createCookie(name,"",-1);
}

但是,它不起作用,我很确定它与我的JQuery尝试有关,只是不确定我的错误在哪里。

感谢您的帮助!

---编辑更新--- 遵循一些建议,这就是我现在得到的:

<html>
  <head>
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
    <script>
      $(function(){
        if(Cookies.get('previsitor')) {
          $('#atc').show(1000);
        }
      });
    </script>
  </head>
  <body>
    <div id="atc" style="display: none">
      <a href="#">Something I want to hide</a>
    </div>
    <script>
      Cookies.set ("previsitor","true",{ expires: 1 });
      alert(document.cookie);
    </script>
  </body>
</html>

我正在使用此库进行Cookie管理:https://github.com/js-cookie/js-cookie

但是,它仍然没有按照我想要的去做,我正在alert(document.cookie);中使用,看起来好像根本没有创建cookie ...但是为什么! :(

3 个答案:

答案 0 :(得分:0)

您只需要在if / else块之后创建cookie

$(document).ready(function() {
  // If the 'show cookie is set we show the message
  if (!readCookie('show')) {
    $('#hide').show();
  }
  else {
    $("#hide").hide();
  }
  createCookie("show", true, 1);
});

以前,因为嵌套在错误条件下,所以根本不调用createCookie函数。

答案 1 :(得分:0)

更改通话

if (readCookie('show')) {
$('#hide').show();
 }
else {
$("#hide").hide();
createCookie("show", true, 1);
}
return false;
});

更改此功能

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) 
{alert(nameEQ.length,c.length);
return c.substring(nameEQ.length,c.length);}
}
return false;
}

这应该有效!

答案 2 :(得分:0)

尝试一下。这应该可以解决问题。

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js"></script>
  <script type="text/javascript">
    //pass cookie name 
    if(checkCookie('the_cookies')){
      $('#atc').show();  
    }
    else{
      $('#atc').hide();
    }

    function checkCookie($name)
    {
      if (typeof $.cookie($name) === 'undefined'){
        // set cookie if not exists
        $.cookie($name, 'the_value');
        return false;
      } else {
        return true;
      }
    }
  </script>