如果窗口加载的条件在javascript中不起作用



以下代码不起作用,无法理解原因。我做错了什么?

     $(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(),无论如何,从本地存储中获取值将始终是一个字符串。

最新更新