【问题标题】:wrong if statement evaluation, document.cookieif 语句评估错误,document.cookie
【发布时间】:2018-05-22 08:04:03
【问题描述】:

我正在尝试使用 document.cookie 执行一些操作, 我检查了下面提到的一些 If 条件:

if((!document.cookie.indexOf('cookies:all_checked') >= 0) ||
   (!document.cookie.indexOf('cookies:first_and_second') != -1) ||
   (!document.cookie.indexOf('cookies:first_and_third') != -1) ||
   (!document.cookie.indexOf('cookies:first_only') != -1)){    
    createCookies();   
}

在此声明之前,我创建了这样的 cookie

var variable = document.cookie == 'cookies:all_checked'

问题在于我是否尝试检查

(!document.cookie.indexOf('cookies:all_checked') >= 0)

或者没有 !标记我在这种情况下是正确的。如何检查该内容的cookies是否真的设置了?

【问题讨论】:

  • 试试!(document.cookie.indexOf('...') >= 0)

标签: javascript if-statement cookies


【解决方案1】:

你的问题是

document.cookie.indexOf('cookies:all_checked')

将返回索引或-1(未找到时)。

在您的示例中,它将返回0,因为document.cookie 您要查找的字符串开头。

然后,!0 将评估为 true,因为 0 评估为 falsetrue 评估为 1,这确实是 >= 0

0 也是>= 0

这就是为什么您每次都会收到true

你应该试试:

!(document.cookie.indexOf('...') >= 0) // false
  document.cookie.indexOf('...') >= 0  // true

请注意,!anyNumber 将导致 truefalse,它们都将是 >= 0,因为 true 将评估为 1false0,它们都是 >= 0

因此,!anyNumber >= 0 将始终为 true


附带说明,请注意:

var variable = document.cookie == 'cookies:all_checked'

设置/创建您的cookie

它的作用是检查cookie 是否等于'cookies:all_checked' 并将这个结果(truefalse)分配给variable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    相关资源
    最近更新 更多