我正在尝试使用 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)
或者没有! 标记我在这种情况下得到真。如何检查带有此内容的cookie是否真的设置好了?
你的问题是
document.cookie.indexOf('cookies:all_checked')
将返回索引或-1
(未找到时(。
在您的示例中,它将返回0
因为document.cookie
以您要查找的字符串开头。
然后,!0
将计算到true
,就像0
评估到false
,true
计算到1
,这确实是>= 0
。
0
也很>= 0
.
这就是为什么你每次都会得到true
。
您应该尝试:
!(document.cookie.indexOf('...') >= 0) // false
document.cookie.indexOf('...') >= 0 // true
请注意,!anyNumber
将导致true
或false
,这两者都将被>= 0
,因为true
的计算结果将是1
,false
0
,两者都是>= 0
因此,!anyNumber >= 0
将永远true
.
作为旁注,请注意:
var variable = document.cookie == 'cookies:all_checked'
不设置/创建您的cookie
。
它的作用是检查cookie
是否等于'cookies:all_checked'
并将这个结果(true
或false
(分配给variable
。