我想知道是否可以将一个if-else
的返回值用作另一个if-else
的条件。
在img
中的第一个if-else file2.js
中,在任何给定点返回一个变量。
在第二个if-else link
中的file3.js
中,我试图将img
的输出用作link
条件的一部分。
我尝试使用=
和===
,但是事实证明,这只能分别加载link
返回值的第一个和最后一个结果。
<!-- file1.html is only included for context and AFAIK, doesn't really affect my question: -->
<script async src="file2.js"></script>
<p>
<a target="_blank" href="file3.html" id="aTarg" name="aTarg">
<img src="https://i.imgur.com/4LtRreH.png" id="pic" name="pic"/>
</a>
</p>
<p>....more article text</p>
/* file2.js */
const now = new Date();
const timeNoon = now.getHours() === 12;
const CallingS1 = "https://i.imgur.com/5IaY11U.png";
const CallingS2 = "https://i.imgur.com/ANdRs50.png";
let img = function() {
if (timeNoon) {
return CallingS1;
} else {
return CallingS2;
}
}
// function imgLink() works well:
function imgLink() {
document.getElementById('pic').src=img();
}
imgLink();
<!-- file3.html: -->
<head>
<script src="file2.js"></script>
<script>
/* Here is where the problem's begin. I'm trying to use the output of img (in file2.js) be the conditions for link() */
function link() {
if (img === CallingS1) {
return location.replace("https://www.google.com/");
} else if (img === CallingS2) {
return location.replace("https://www.bing.com/");
} else {
return location.replace("https://stackoverflow.com/");
}
}
</script>
</head>
<body onload="link()">
</body>
我试图让function link()
依赖于let img = function()
的输出。
答案 0 :(得分:3)
img
是一个函数。只需调用它即可,例如:
function link() {
const imgRes = img();
if (imgRes === CallingS1) {
return location.replace("https://www.google.com/");
} else if (imgRes === CallingS2) {
return location.replace("https://www.bing.com/");
} else {
return location.replace("https://stackoverflow.com/");
}
}