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");
答案 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