jQuery if语句坏了吗?

时间:2014-04-07 11:09:39

标签: javascript php jquery

我有一个php网页,用户将其详细信息输入到表单中,然后在提交两个部分(命名的配置文件和图像)后,必须出现。这是javascript代码:

        jQuery(document).ready(function($) {

            var registered = <?php echo $registered; ?>;
            alert(registered);
            if (registered == 'false') {

                $("#profile").hide();
                $("#images").hide();
            }
            if (registered == 'true') {

                                    alert('hello');
                $("#profile").show();
                $("#images").show();
            }

        });

由于某种原因,它根本不会进入if语句,即使警报显示已注册的值为true。这可能是什么问题?

6 个答案:

答案 0 :(得分:1)

var registered = <?php json_encode($registered) ?>
if(registered == true) {
    alert(registered);    
    $("#profile").hide();
    $("#images").hide();
} else {
    alert('hello');
    $("#profile").show();
    $("#images").show();
}

答案 1 :(得分:0)

您正在将字符串'true'与布尔值true混合。尝试从头到尾使用布尔值的版本:

var registered = <?= json_encode($registered) ?>;

if (registered) {
    $("#profile").hide();
    $("#images").hide();
} else {
    $("#profile").show();
    $("#images").show();
}

编辑 - 感谢Jon在另一条评论中建议使用json_encode

答案 2 :(得分:0)

use JSON.parse()使用格式正确的JSON字符串并返回生成的JavaScript对象。

 //JSON.parse(registered);

var registered = <?php echo $registered; ?>;

        if (!(JSON.parse(registered))) {

            $("#profile").hide();
            $("#images").hide();
        }
       else {

            $("#profile").show();
            $("#images").show();
        }

答案 3 :(得分:0)

删除引号并尝试

 jQuery(document).ready(function($) {

            var registered = <?php echo $registered; ?>;
            alert(registered);
            if (registered == false) {  //Remove the quotes

                $("#profile").hide();
                $("#images").hide();
            }
            if (registered == true) {   //Remove the quotes

                                    alert('hello');
                $("#profile").show();
                $("#images").show();
            }

        });

答案 4 :(得分:0)

Reason in this demo

var registered = true;
alert(registered == 'true'); //return false
alert(registered == 'false'); //return false

在JavaScript数据类型中,比较有点不一致。所以总是尝试比较相同的数据类型。

所以试试:

var registered = true;
alert(registered == true); //return true
alert(registered == false); //return false

将您的代码更改为:

if (registered) {
    alert('hello');
    $("#profile").show();
    $("#images").show();
}
else {
    $("#profile").hide();
    $("#images").hide();
}

答案 5 :(得分:0)

试试这个

jQuery(document).ready(function($) {

var registered = "<?php echo $registered; ?>";
alert(registered);
if (registered == false) {

 $("#profile").hide();
 $("#images").hide();
  }
 else if (registered == true) {

   alert('hello');
  $("#profile").show();
 $("#images").show();
   }

  });