Javascript函数只执行一次

时间:2015-07-29 16:52:07

标签: javascript cookies

我一直在编写一个脚本,只显示一次警告框(使用cookie)。以下是我到目前为止的情况:

<script type="text/javascript">
  function cookie(){
    var x = document.cookie;

    if (x = "") {
      alert("Welcome to Steampunk Inc!");
      document.cookie = 'iwashere=iwashere; expires=Fri, 31-Dec-9999 23:59:59 GMT;';
    } else if (x = "iwashere=iwashere") {
      console.log("You came back!");
    }
  }
  cookie();
</script>

我将此作为我的html文件正文中的第一件事。代码位于我的网站here的索引页面上。

1 个答案:

答案 0 :(得分:1)

主要问题是你使用=运算符if。 =运算符为变量赋值。相反,你应该使用==运算符进行比较。

此外,document.cookie将返回您为网站存储的所有Cookie。您应该使用一些函数来获取/设置特定的cookie

以下是示例代码:

<script type="text/javascript">
  function getCookie(name) {
    var value = "; " + document.cookie;
    var parts = value.split("; " + name + "=");
    if (parts.length == 2) return parts.pop().split(";").shift();
  }
  function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
  }
  function cookie(){
    var x = getCookie("iwashere");

    if (x == "" || x == null) {
      alert("Welcome to Steampunk Inc!");
      setCookie("iwashere", "iwashere", 365);
    } else if (x == "iwashere") {
      console.log("You came back!");
    }
  }
  cookie();
</script>