我应该如何正确地构建这个"如果"使用jQuery的语句?

时间:2016-03-26 07:03:51

标签: javascript jquery if-statement parse-platform

我已经编写了if语句,检查是否有当前用户,如果是,请从我的数据库中获取当前用户的个人资料图片网址并将其放入div中。我已成功完成了以下逻辑:

  function checkLogin() {

    if (Parse.User.current()) {
      var profilePicUrl = Parse.User.current().get("profile_picture").url();

      $(".user-image").css("background-image", "url("+profilePicUrl+")");
    } else {

      $(".user-image").css("background-image", "url(//default image)");
    }
  };

但问题是,当用户没有配置文件图像时,会引发错误。我试图通过在原来的两个之间添加以下else if语句来抵消这一点:

 function checkLogin() {

    if (Parse.User.current()) {
      var profilePicUrl = Parse.User.current().get("profile_picture").url();

      $(".user-image").css("background-image", "url("+profilePicUrl+")");

    } else if (Parse.User.current() && !profilePicUrl){

      $(".user-image").css("background-image", "url(//default image)");

    } else {

      $(".user-image").css("background-image", "url(//default image)");

    }
  };

现在我几乎可以肯定我正在使用&&&操作员在这里错了,但我想在中间else if说的是"如果有当前的用户&他们没有个人资料图片......"

我如何正确说明这一点?

3 个答案:

答案 0 :(得分:3)

实际上,如果找不到密钥,parseObject.get()会返回null,所以您只需要:

 function checkLogin() {
    if (user = Parse.User.current()) {
      var profilePic = user.get("profile_picture");
      var profilePicUrl = profilePic ? profilePic.url() : "//default image";  
      $(".user-image").css("background-image", "url("+profilePicUrl+")");
    }
  };

请注意,var someVar = someVar ? valueA : valueB;语法为Conditional (ternary) Operator

答案 1 :(得分:1)

您需要在检查之前获取个人资料图片网址并添加try / catch作为安全网(因为我不知道currenturl方法的实现)< / p>

function checkLogin() 
{
    try
    {
      var profilePicUrl = Parse.User.current().get("profile_picture").url();
      if (Parse.User.current() && profilePicUrl) 
      {
        $(".user-image").css("background-image", "url("+profilePicUrl+")");
      } 
      else 
      {
        $(".user-image").css("background-image", "url(//default image)");
      }
    }
    catch(e)
    {
      console.log("unexpected error occured");
      $(".user-image").css("background-image", "url(//default image)");
    }
  };

答案 2 :(得分:-1)

试试这个......

var profilePicUrl = null;//assign some empty value here...

if (Parse.User.current()) {
      profilePicUrl = Parse.User.current().get("profile_picture").url();   

 } 
if(Parse.User.current() && profilePicUrl ){

     $(".user-image").css("background-image", "url("+profilePicUrl+")");
}
else if (Parse.User.current() && !profilePicUrl){

     $(".user-image").css("background-image", "url(//default image)");

} else {
      $(".user-image").css("background-image", "url(//default image)");
}