以下代码不起作用,无法理解原因。我做错了什么?
$(function() {
var advanced = localStorage['advanced-search'];
alert(advanced);//this shows true
if((advanced == "true")|(advanced==true)){
//Code never reaches here
alert('click');
$('#advanced-search').trigger('click');
localStorage['advanced-search'] = false;
}
});
检查 OR 运算符。它应该是这样的——
if((advanced == "true")||(advanced==true)){
此表达式不起作用:
if((advanced == "true")|(advanced==true)){
这足以做到:
if(advanced) {
因为"true"
作为字符串也是"真实的"。
你缺少一个额外的 |:
$(function() {
var advanced = localStorage.getItem['advanced-search'];
alert(advanced);//this shows true
if((advanced == "true") || (advanced==true)){
//Code never reaches here
alert('click');
$('#advanced-search').trigger('click');
localStorage['advanced-search'] = false;
}
});
OR 运算符需要是两个|
..喜欢这个:
if((advanced == "true") || (advanced==true)){
如果变量advanced
是布尔值,那么您可以简单地使用它:
if(advanced) {
// code here..
}
我认为你的 javascript 有错误 code.so 你不能使用"|"而不是"||"所以尝试通过以下代码来解决您的错误。
$(function() {
var advanced = localStorage.getItem['advanced-search'];
alert(advanced);//this shows true
if((advanced == "true")||(advanced==true)){
//Code never reaches here
alert('click');
$('#advanced-search').trigger('click');
localStorage['advanced-search'] = false;
}
});
正如您所说,正确的OR运算符仍然不起作用,那么我怀疑一定是这种情况有问题。
检查这个小提琴:http://jsfiddle.net/VTfQU/
使用此代码可简化if
条件:
var advanced = localStorage.getItem['advanced-search'];
advanced = advanced.toString().toLowerCase();
if (advanced == "true") {
$('#advanced-search').trigger('click');
localStorage['advanced-search'] = "false";
}
这个想法是将数据转换为小写,然后只检查该值的条件。为了安全起见,我添加了toString()
,无论如何,从本地存储中获取值将始终是一个字符串。