javascript - 简化 if 语句

标签 javascript jquery html

我有一个带有 if 语句的函数,其中包含两个单独的 AJAX 调用操作。根据名为 subjectType 的变量,调用条件会发生变化。如果我想获取用户信息,我需要为其提供 userLoginName。如果我尝试获取站点信息,我需要为其提供 webURL。

我可以使用 if 语句来完成此任务,但是有没有更好的方法来做到这一点而不必重复大部分行?

var subjectType = if(/*I'll check the value of the drop down to see if a user or site report was asked for*/)?"GetGroupCollectionFromUser":"GetGroupCollectionFromWeb";

function parseSubjectColFromUser(subject){
  var subjectGroups = [];
  if (subjectType){
    $().SPServices({
      operation: "GetGroupCollectionFromUser",
      userLoginName: subject,
      completefunc: function(xData, Status){
        $(xData.responseXML).find("Group").each(function(){
            subjectGroups.push($(this).attr('Name'));
        });
      }
    });
  }else{
    $().SPServices({
      operation: "GetGroupCollectionFromWeb",
      webURL: subject,
      completefunc: function(xData, Status){
        $(xData.responseXML).find("Group").each(function(){
            subjectGroups.push($(this).attr('Name'));
        });
      }
    });
  }
  return subjectGroups;
}

最佳答案

应该很简单...我还假设您想在此处使用回调函数,因为您是通过 AJAX 请求执行此操作。

function parseSubjectColFromUser(subject, myCallback){
    var subjectGroups = [];
    var params = {
        operation: subjectType ? "GetGroupCollectionFromUser" : "GetGroupCollectionFromWeb",
        completefunc: function(xData, Status){
            $(xData.responseXML).find("Group").each(function(){
                subjectGroups.push($(this).attr('Name'));
            });
            myCallback(subjectGroups);
        }
    };

    if (subjectType) {
        params.userLoginName = subject;
    } else {
        params.webURL = subject;
    }

    $().SPServices(params);
}

关于javascript - 简化 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19819761/

相关文章:

html - IE7 选择框在设置 css 时消失

javascript - 通过重复 if/else 部分简化函数

javascript - jQuery 动态输入字段不起作用

javascript - 使用键从集合动态创建树对象

javascript - 更改图像幻灯片幻灯片中的图像

javascript - ShareThis WP 插件 - 禁用 onhover?

html - 我想通过将 Canvas 图像和 div 包装成一个巨大的 div 来居中,但我当前的尝试失败了

html - CSS 真的可以覆盖页面上 HTML 元素的顺序吗?

javascript - 调整大小后更新 ng-style 宽度

javascript - 相对于其父级位置重新定位 Sprite