我可以在回报中使用If / Else语句吗?

时间:2017-03-27 14:25:00

标签: javascript if-statement return

function() {
  var element = document.getElementsByClassName("MagicZoomPlus")[0];
  var image = "https://www.mywebsite.com" + element.getElementsByTagName('img')[0].getAttribute("src");
  return image;
}

这是我当前的代码,它工作正常,除了一些图像存储在本地,而其他图像在具有不同路径的CDN上。可以,如果是这样,我会写它来说像

If img src starts with “/uploads” than 
var image = "https://www.mywebsite.com" + element.getElementsByTagName('img')[0].getAttribute("src");
Else than
var image = element.getElementsByTagName('img')[0].getAttribute("src");

4 个答案:

答案 0 :(得分:1)

function() {
  var element = document.getElementsByClassName("MagicZoomPlus")[0];
  var src = element.getElementsByTagName('img')[0].getAttribute("src");
  var prefix = src.startWith('/uploads') ? "https://www.mywebsite.com" : "";
  var image = prefix + src;
  return image;
}

你可以用吗?运营商。 的?运算符就好像。如果表达式为真,则将使用:运算符的左侧,否则使用右侧。

答案 1 :(得分:1)

使用变量并选择querySelector()可以缩短很多东西。

这也使用if语句来指导代码流,并使用.startsWith()方法检查.src是否以值开头。

function myFunc() {
  var img = document.querySelector(".MagicZoomPlus img");
  if (img.src.startsWith("/uploads")) {
    return "https://www.mywebsite.com" + img.src
  }
  return img.src
}

因为你想要第一个img元素的第一个MagicZoomPlus,我们可以简单地构建一个类似你在CSS中使用的选择器,直接用.querySelector()获取图像。它的对应.querySelectorAll()返回所有匹配的元素..

然后,如果图片src"/uploads"开头,我们会立即将"https://www.mywebsite.com"的连接返回到img.src

自从我们返回else后,我们不需要if分支,所以剩下的就是img.src如果if条件失败。

我还修复了函数的无效语法,因为它没有名称。

答案 2 :(得分:0)

所以只需使用ternary operator即可。我将其分解为变量以便更具可读性

function getGoogleSpreadsheetAsExcel(){
  
  try {
    
    var ss = SpreadsheetApp.getActive();
    var sheet = DriveApp.getFileById(ss.getId());
    
    // sets sharing to public - to send out email.
    sheet.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
    
    var url = "https://www.googleapis.com/drive/v3/files/" + ss.getId() + "/export?mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&key=" + "YOURAPIKEYGOESHERE4";
    var blob = UrlFetchApp.fetch(url).getBlob();
    
    Logger.log(url);
    
    blob.setName(ss.getName() + ".xlsx");
    
    var now = new Date();
    
    MailApp.sendEmail("YOUREMAILADDRESSGOESHERE", "EMAIL SUBJECT " + now , "EMAIL BODY " + now , {attachments: [blob]});
    
  } catch (f) {
    Logger.log(f.toString());
  }
    // returns the file back to Private access
    sheet.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.EDIT);
}

答案 3 :(得分:0)

您可以使用三元语法:

var image = '';
var valueIfTrue = "https://www.mywebsite.com" + element.getElementsByTagName('img')[0].getAttribute("src")
var valueIfFalse = element.getElementsByTagName('img')[0].getAttribute("src")
image = image src starts with "/uploads" ? valueIfTrue : valueIfFalse

我把你的伪代码作为条件,你的工作是正确的! :)

有关该主题的更多信息,请查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator