我有两个函数。第一个函数计算domcontentloaded和resize上的变量。第二个函数在domcontentloaded和scroll上触发。我需要第二个函数中第一个函数的3个变量来计算一些东西。我试图从第一个函数upme()中获取返回变量数组,以便在第二个函数doso()中使用-我收到此错误poss isn't defined at htmldocument.doso
java 脚本
document.addEventListener('DOMContentLoaded', upme);
window.addEventListener('resize', upme);
function upme()
{
var rome = document.getElementById("out-cmnt");
var rect = rome.getBoundingClientRect();
// console.log(rect.top, rect.right, rect.bottom, rect.left);
var poss = rect.top + window.scrollY; var iwwr = window.innerWidth;
var koss = rect.bottom + window.scrollY; var loss = koss - poss;
return [poss, loss];
}
document.addEventListener('DOMContentLoaded', doso);
window.addEventListener('scroll', doso);
function doso()
{
lopp = document.getElementById("Web_1920__1");
hope = lopp.clientHeight; const meme = document.body.scrollHeight;
const keke = hope/meme; const scsc = window.scrollY;
var innr = window.innerHeight;
var saka = upme(); // problem here calling 1st function
var noss = poss - innr + loss; // problem here
if(scsc > noss && window.matchMedia("(min-width: 765px)").matches)
{
// doing something
}
}
doso();
我怎样才能成功地把poss,loss,koss这些变量放到第二个函数doso()-里面呢?请帮帮我。谢谢参与这个社区的每一个人。
2条答案
按热度按时间gorkyyrv1#
调用函数时,只能获取选择为
return
的值。如果你想使用它们的名字,你需要用你想要的名字来声明它们。在你的例子中,你只有一个名为
saka
的数组,其中[0]是poss,[1]是loss。首先,这里你只能访问poss和loss,因为这是upme函数中返回的仅有的两个变量。
你把它们作为一个数组返回,在javascript中有一个简单的方法来检索和命名数组中返回的变量:
在这段代码中,假设从该函数返回的数组大小为2,并且希望为每个元素声明1个变量,方法是分别将它们命名为
poss
和loss
。如果需要更多变量,只需在
upme
中返回更多变量,然后在调用函数时声明并命名它们。您也可以创建一个对象,但是这个解决方案对于您的问题来说已经足够好了。
yhqotfr82#
更改此行:
致: